113

1 つのスペースを含む文字列の長さは、常に 1 に等しくなります。

alert('My str length: ' + str.length);

スペースは文字なので、次のようになります。

str = "   ";
alert('My str length:' + str.length); // My str length: 3

空の文字列とスペースのみを含む文字列を区別するにはどうすればよいですか? スペースのみを含む文字列を検出するにはどうすればよいですか?

4

8 に答える 8

185

これを実現するには、正規表現を使用して文字列内の空白をすべて削除します。結果の文字列の長さが である場合、0元の文字列に空白のみが含まれていることを確認できます。これを試して:

var str = "    ";
if (!str.replace(/\s/g, '').length) {
  console.log('string only contains whitespace (ie. spaces, tabs or line breaks)');
}

于 2012-04-21T19:00:55.697 に答える
60

最速の解決策は、正規表現プロトタイプ関数test()を使用して、スペース、タブ、改行以外の文字を探すことです\S

if (!/\S/.test(str)) {
  // Didn't find something other than a space which means it's empty
}

非常に長い文字列がある場合、スペース以外の文字が見つかるとすぐに処理が停止するため、大きな違いが生じる可能性があります。

于 2016-03-04T18:41:17.173 に答える
8

文字列のトリム関数を作成することで、文字列値をトリムできます。

String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

これで、すべての文字列で使用できるようになり、次のように使用できます。

str.trim().length// Result will be 0

このメソッドを使用して、文字列の最初と最後の空白を削除することもできます。

"  hello  ".trim(); // Result will be "hello"
于 2012-04-21T19:37:06.693 に答える