9

在我的代码中,我需要编写一个 if else 块-

when the variable `currentValue` is holding only spaces -> certain code

但我不知道如何写这个条件,因为currentValue可以是任何大小的字符串。 如果我写它检查单个空格" ",它可以容纳等。" "currentValue!=" "

4

4 回答 4

25

可能看起来像

if( !currentValue.trim().length ) {
    // only white-spaces
}

文档:trim

即使它非常不言自明;被修剪字符串currentValue,这基本上意味着开头和结尾的所有空白字符都将被删除。如果整个字符串由空白字符组成,它会被一起清理,这反过来意味着结果的 is和will be 。length0!0true

关于性能,我将此解决方案与@mishik的RegExp方式进行了比较。事实证明,.trim()在 FireFox 中要快得多,而RegExp在 Chrome 中似乎要快得多。

http://jsperf.com/regexp-vs-trim-performance

于 2013-07-08T10:26:49.790 回答
9

简单地:

if (/^\s*$/.test(your_string)) {
  // Only spaces
}

仅匹配space

if (/^ *$/.test(your_string)) {
  // Only spaces
}

说明:/^\s*$/- 匹配字符串的开头,然后是任意数量的空格(空格、换行符、制表符等),然后是字符串的结尾。/^ *$/- 相同,但仅适用于空格。

如果您不想匹配空字符串:替换*+以确保至少存在一个字符。

于 2013-07-08T10:25:00.660 回答
0

可以使用正则表达式检查字符串是否不包含任何非空白字符。该方法最多只会检查每个字符一次,一旦遇到非空格字符就会提前退出。

if(!/\S/.test(str)){
   console.log('str contains only whitespace');
}

也可以String#trim用来删除字符串开头和结尾的所有空格。如果字符串仅包含空格,则结果将是一个空字符串,即falsy

if(!str.trim()){
    console.log('str contains only whitespace');
}

如果字符串可能为 null 或未定义,则可以使用可选的链接运算符。

if(!str?.trim()){
    console.log('str is null or undefined, or contains only whitespace');
}
于 2021-02-09T05:22:15.310 回答
-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");
}
于 2013-07-08T10:39:35.870 回答