C#String.IsNullOrEmptyJavascriptと同等


86

String.IsNullOrEmpty(string)javascriptのC#と同等の文字列呼び出しを実行したいと思います。簡単な電話があると思ってオンラインで調べましたが、見つかりませんでした。

今のところ、私はif(string === "" || string === null)それをカバーするためにステートメントを使用していますが、むしろ事前定義されたメソッドを使用したいと思います(何らかの理由でスリップするインスタンスを取得し続けます)

等しい最も近いjavascript(またはjqueryがある場合はjquery)呼び出しは何ですか?



3
@ DanielA.White議論は同じですが、私のようなC#開発者にとって、この質問(タイトル付き)が見つかる可能性が高くなります
Daniele Armanasco 2013

回答:


212

あなたは考えすぎています。ヌル文字列と空の文字列はどちらもJavaScriptでは誤った値です。

if(!theString) {
 alert("the string is null or empty");
}

Falsey:

  • false
  • ヌル
  • 未定義
  • 空の文字列 ''
  • 数字0
  • 数NaN

16
驚くべきことに、これは非常に多くの賛成票を獲得しました。この答えは正しくありません。誤った値は0になると自分自身に言いました。ユーザーがフィールドに0を入力した場合、これは空の文字列ではありません。空の文字列は、文字通り「空の」文字列です。
KingOfHypocrites 2015年

3
ユーザーが0を入力した場合、値は0ではなく「0」の文字列になります。したがって、それでも正しいと思います。あなたの最善の解決策、KingOfHypocritesを投稿してください?
Jonas T

2
KingOfHypocritesは、文字列「0」が誤った結果を返すという点で正しいです。「0」== falseはtrueを返します! "0" == falseはtrueを返します
Martien de Jong 2016

2
有用。しかし、あなたのデータセットを知っています。「0」または「false」が可能な入力である場合、このソリューションは常に機能するとは限りません。
ネヴィン2018年

12

何らかの理由で、あなただけのテストしたい、場合nullempty、あなたが行うことができます:

function isNullOrEmpty( s ) 
{
    return ( s == null || s === "" );
}

注:これは、コメントで言及されている@Raynosとして未定義もキャッチします。


次のように最適化できますreturn (s == null || s === "")
Raynos 2011

@ Raynos-nullに関して===ではなく==なのはなぜですか?そして、渡されたオブジェクトが未定義の場合はどうなりますか?未定義<> nullでしょ?
コードマーベリック

s == null両方nullundefinedそれ以降をキャッチnull == undefined
Raynos 2011

@ Raynos-わかりました、わかりましたが、undefinedまたはnullを本当に知りたい場合は、===を使用する必要があります。
コードマーベリック


5

それstringが数値ではないことがわかっている場合、これは機能します。

if (!string) {
  .
  .
  .

文字列「0」は偽であるため、文字列が数値であるかどうかを確認する必要はありません。
JoJo

1
はい、文字列「0」は真ですが、変数stringが実際には文字列ではなく数値ゼロである場合、string偽になります。それがstring実際の文字列またはnullであることがわかっていれば、問題にはなりません。
awm 2011

3

あなたはただすることができます

if(!string)
{
  //...
}

これによりstring、未定義、null、および空の文字列がチェックされます。


1

明確にするためにif(!theString){//...}、theStringが宣言されていない変数である場合、未定義のエラーがスローされ、trueではありません。一方、次の場合:if(!window.theString){//...}またはvar theString; if(!theString){//...}期待どおりに機能します。変数が宣言されていない可能性がある場合(プロパティであるか、単に設定されていないのではなく)、次を使用する必要があります。if(typeof theString === 'undefined'){//...}

私の好みは、それをラップするプロトタイプ関数を作成することです。


1

正解とマークされた答えには小さなエラーが含まれているので、これが解決策を考え出すための最善の試みです。私には2つのオプションがあります。1つは文字列を取り、もう1つは文字列または数字を取ります。これは、多くの人がjavascriptで文字列と数字を混合していると想定しているためです。

手順:-オブジェクトがnullの場合、それはnullまたは空の文字列です。-タイプが文字列(または数値)でない場合、その文字列値はnullまたは空です。注:設定によっては、ここでも例外をスローする場合があります。-トリミングされた文字列値の長さが1より小さい場合、nullまたは空です。

var stringIsNullOrEmpty = function(theString)
{
    return theString == null || typeof theString != "string" || theString.trim().length < 1;
}

var stringableIsNullOrEmpty = function(theString)
{
    if(theString == null) return true;
    var type = typeof theString;
    if(type != "string" && type != "number") return true;
    return theString.toString().trim().length < 1;
}

1

あなたは論理でそれを言うことができます

変数名がstrValで、nullか空かを確認するとします。

if (typeof (strVal) == 'string' && strVal.length > 0) 
{
// is has a value and it is not null  :)
}
else
{
//it is null or empty :(
}

1

次のような多くの場所で再利用できる1つのユーティリティメソッドを作成できます。

 function isNullOrEmpty(str){
    var returnValue = false;
    if (  !str
        || str == null
        || str === 'null'
        || str === ''
        || str === '{}'
        || str === 'undefined'
        || str.length === 0 ) {
        returnValue = true;
    }
    return returnValue;
  }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.