如何检测仅包含空格的字符串?


83

包含一个空格的字符串长度始终等于1:

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

空格是一个字符,因此:

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

如何区分空字符串和仅包含空格的字符串?如何检测仅包含空格的字符串?


1
修剪并检查长度是否为零。您正在使用jQuery吗?
Chetter Hummin 2012年

2
删除所有空格,然后查看字符串长度是否为0?或使用正则表达式仅匹配空格字符串...
Felix Kling 2012年

Answers:


154

为此,您可以使用正则表达式删除字符串中的所有空格。如果结果字符串的长度为0,则可以确保原始字符串仅包含空格。尝试这个:

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


1
好吧,字符串只包含空格。
dwerner

50

最快的解决方案是使用regex原型函数test()并查找不是空格或换行符的任何字符\S

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

如果您有一个超长的字符串,它可能会带来很大的不同。


15

与Rory的答案类似,使用ECMA 5,您现在可以直接调用str.trim().length而不使用正则表达式。如果结果值为0,则说明您有一个仅包含空格的字符串。

if (!str.trim().length) {
  console.log('str is empty!');
}

您可以在这里阅读更多有关trim的信息


2
我最喜欢这个答案。很好吃 👍
GTS乔

3
这是最优雅的解决方案。
鱼丸鱼

11
if(!str.trim()){
  console.log('string is empty or only contains spaces');
}

可以使用从字符串中删除空格String#trim()

要检查字符串是否为null或未定义,可以检查字符串本身是否为false,在这种情况下为null,未定义或为空字符串。第一次检查是必要的,因为尝试在上调用方法nullundefined将导致错误。要检查它是否仅包含空格,可以在修剪后检查字符串是否为假,这意味着它在那时是空字符串。

if(!str || !str.trim()){
   //str is null, undefined, or contains only spaces
}

可以使用可选的链接运算符简化此过程。

if(!str?.trim()){
   //str is null, undefined, or contains only spaces
}

如果确定变量将是字符串,则仅需要第二次检查。

if(!str.trim()){
   console.log("str is empty or contains only spaces");
}

8

您可以通过为字符串创建修剪函数来修剪字符串值。

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

现在它将对您的每个String可用,您可以将其用作

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

您也可以使用此方法删除String开头和结尾处的空格,即

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

4
扩展内置对象的原型不是一个好主意。
sbichenko 2015年

@exizt:如果只能由他自己的代码使用怎么办?
Shehzad 2015年

0

通过创建修剪函数来修剪String值

var text = "  ";
if($.trim(text.length == 0){
  console.log("Text is empty");
}
else
{
  console.log("Text is not empty");
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.