2012-04-21 5 views
27

一つだけのスペースが常に1に等しい含む文字列の長さが含まれている文字列を検出します:は、スペース

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

スペースはとてもキャラクター、次のとおりです。

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

どのように区別をすることができます空の文字列と空白のみを含む文字列の間?空白のみを含む文字列を検出するにはどうすればよいですか?

+0

トリムして、長さがゼロであることを確認します。 jQueryを使用していますか? –

+2

すべての空白を削除し、文字列の長さが '0'ですか?または、正規表現を使用して空白文字列のみを一致させることができます。 –

+1

[入力テキストフィールドに空白のみが含まれているかどうかを確認する方法は?](http://stackoverflow.com/questions/2662245/how-to-check -whether-the-input-text-field-only-white-spaces) –

答えて

47

これを実現するには、正規表現を使用して文字列内のすべての空白を削除します。結果の文字列の長さが0の場合、元の空白のみが含まれていることを確認できます。あなたの弦楽のためのトリム機能を作成して文字列値をトリミングすることができ

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

Example fiddle

+0

文字列には空白しか含まれていません。 – dwerner

4

:これを試してみてください。

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

は今それはあなたのすべての文字列のために利用できるようになりますと、あなたはまた、

すなわち文字列の先頭と末尾に空白スペースを削除するには、このメソッドを使用することができます

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

として使用することができます

" hello ".trim(); // Result will be "hello" 
+2

組み込みオブジェクトのプロトタイプを拡張することは悪い考えです。 – sbichenko

+0

@exizt:自分のコードでのみ使用される場合はどうなりますか? – Shehzad

9

最速の解決策は、正規表現プロトタイプ機能test()を使用して、スペースや改行\Sではない任意の文字を探して次のようになります。

if (/\S/.test(str)) 
{ 
    // found something other than a space or line break 
} 

スーパーロングストリングの場合は、大きな違いがあります。