文字列に空白文字が含まれているかどうかを検出するにはどうすればよいですか?
以下は実際のスペース文字のみを検出します。あらゆる種類の空白をチェックする必要があります。
if(str.indexOf(' ') >= 0){
console.log("contains spaces");
}
ベストアンサー1
あなたが持っているものはスペースを見つけるでしょうどこでも単語間だけでなく、文字列内でも適用します。
あらゆる種類の空白文字を検索する場合は、正規表現を使用する次のコードを使用できます。
if (/\s/.test(str)) {
// It has any kind of whitespace
}
\s
「任意の空白文字」(スペース、タブ、垂直タブ、フォームフィード、改行など)を意味し、文字列内のどこでもその文字を検索します。
MDNによるとは\s
以下と同等です: [ \f\n\r\t\v\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]
。
どういうわけか、私はあなたの質問を「文字列にのみスペースは?"と聞かれたので、以下のように答えました。しかし、@CrazyTrain が指摘しているように、質問にはそうは書かれていません。念のため、そのままにしておきます...
文字通りスペースを意味する場合は、正規表現で実行できます。
if (/^ *$/.test(str)) {
// It has only spaces, or is empty
}
つまり、文字列の先頭 ( ^
) に続いて 0 個以上のスペース文字が続き、その後に文字列の末尾 ( ) が続くものに一致します。空の文字列と一致しないようにするには、を a に$
変更します。*
+
一般的な概念として空白を意味する場合:
if (/^\s*$/.test(str)) {
// It has only whitespace
}
これは\s
スペースではなく (空白) を使用しますが、それ以外は同じです。(繰り返しますが、空の文字列と一致したくない場合は に*
変更します。)+