首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >判断字符串是否为“空”

判断字符串是否为“空”
EN

Stack Overflow用户
提问于 2010-09-05 11:06:51
回答 6查看 8.7K关注 0票数 7

我需要一个JavaScript函数来告诉我字符串对象是否为空。说到“空”,我的意思是它不全是空格字符。我写了这个原型:

代码语言:javascript
复制
String.prototype.isEmpty = function() {
  return this.length === 0 || this === " " || this.test(/^\s*$/);
}

这样可以吗?

有没有性能更好的版本?

EN

回答 6

Stack Overflow用户

发布于 2010-09-05 15:00:53

使用

代码语言:javascript
复制
String.prototype.isEmpty = function() {  
  if (!this.match(/\S/)) {
    return ('enter some valid input.Empty space is not allowed');
  } else {
   return "correct input";
  }
}


alert("test 1:"+("    ".isEmpty()));
alert("test 2:"+("   \t ".isEmpty()));
alert("test 3:"+("  \n   ".isEmpty()));
alert("test 4:"+("hi".isEmpty()));

注意:

\s将匹配空格字符:空格、制表符或换行符。

\S将匹配非空格字符:除空格、制表符或换行符以外的任何字符。如果字符串中只有一个不是空格、制表符或换行符的字符,那么它就不是空的。因此,您只需搜索一个字符:\S

票数 12
EN

Stack Overflow用户

发布于 2010-09-05 11:11:05

看起来您需要使用/^\s*$/.test(this)而不是this.test(/^\s*$/)strings没有test()方法,除非您正在使用实现此方法的某个JavaScript库。

/^\s*$/.test(this)已经足够了,但是如果前两个表达式中的任何一个的计算结果为真,那么前两个表达式就会短路,而不必测试正则表达式。这应该是非常有效的。

正如@Matthew Crumley在上面的注释中指出的那样,您的this === " "表达式将始终计算为false。您可以删除此表达式,或者如果您希望看到大量仅包含单个空格字符的字符串,则可以使用==

代码语言:javascript
复制
String.prototype.isEmpty = function() {
  return this.length === 0 || this == " " || /^\s*$/.test(this);
}
票数 4
EN

Stack Overflow用户

发布于 2010-09-05 11:59:31

代码语言:javascript
复制
String.prototype.isEmpty = function() {
  return this.length == 0 || /^\s*$/.test(this);
}

在255个字符中(不考虑编码大于255的Unicode字符),长度为1的字符串有可能包含空格字符。考虑长度大于1的字符串,这种可能性会更低。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3644853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档