在我的代码中,我需要编写一个if else块 -
when the variable `currentValue` is holding only spaces -> certain code
但是我不知道如何编写这个条件,因为currentValue
可以是任何大小的字符串。它可以保留" "
," "
等。
如果我写currentValue!=" "
,它会检查单个空格。
答案 0 :(得分:14)
可能看起来像
if( !currentValue.trim().length ) {
// only white-spaces
}
docs:trim
即使它非常不言自明; currentValue
引用的字符串获取 trim ,这基本上意味着开头和结尾的所有空白字符都将被删除。如果整个字符串由空格字符组成,则会将其全部清除,这反过来意味着结果的length
为0
,而!0
将为true
。
关于性能,我将此解决方案与来自@mishik的 RegExp 方式进行了比较。事实证明,.trim()
在FireFox中要快得多,而RegExp
在Chrome中似乎更快。
答案 1 :(得分:8)
简单地:
if (/^\s*$/.test(your_string)) {
// Only spaces
}
仅匹配space
:
if (/^ *$/.test(your_string)) {
// Only spaces
}
说明:/^\s*$/
- 匹配字符串的开头,然后匹配任意数量的空格(空格,换行符,制表符等),然后是字符串结尾。 /^ *$/
- 相同,但仅适用于空格。
如果您不想匹配空字符串:请将*
替换为+
,以确保至少存在一个字符。
答案 2 :(得分:0)
可以使用正则表达式检查字符串是否不包含任何非空白字符。此方法最多只检查每个字符一次,一旦遇到不是空格的字符就会提前退出。
if(!/\S/.test(str)){
console.log('str contains only whitespace');
}
还可以使用 String#trim
删除字符串开头和结尾的所有空格。如果字符串只包含空格,则结果将是一个空字符串,即 falsy。
if(!str.trim()){
console.log('str contains only whitespace');
}
如果字符串可能为空或未定义,则可以使用 optional chaining operator。
if(!str?.trim()){
console.log('str is null or undefined, or contains only whitespace');
}
答案 3 :(得分:-1)
尝试 - :
your_string.split(" ").length
修改强>:
var your_string = " ";
var x = your_string.split(" ").length - 1;
if ( your_string.length > 0 && (your_string.length - x) == 0 ) {
alert("your_string has only spaces");
}