我需要一个JavaScript函数来告诉我字符串对象是否为空.通过"空",我的意思是它不仅仅是空白字符.我写过这个原型:
String.prototype.isEmpty = function() {
return this.length === 0 || this === " " || this.test(/^\s*$/);
}
Run Code Online (Sandbox Code Playgroud)
这好吗?
那里有更高性能的版本吗?
swe*_*ing 12
使用
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()));
Run Code Online (Sandbox Code Playgroud)
注意:
\ s将匹配空白字符:空格,制表符或新行.
\ S将匹配非空白字符:除了空格,制表符或新行之外的任何内容.如果你的字符串有一个不是空格,制表符或新行的单个字符,那么它不是空的.因此,您只需要搜索一个字符:\ S.
看来您需要使用/^\s*$/.test(this)而不是this.test(/^\s*$/). 没有用于stringstest()的方法,除非您使用某些实现此方法的 JavaScript 库。
这/^\s*$/.test(this)本来就足够了,但是如果前两个表达式中的任何一个计算结果为 true,则前两个表达式将短路,而无需测试正则表达式。这应该是非常有效的。
正如@Matthew Crumley在上面的评论中指出的那样,你的this === " "表达式将始终评估为 false。您可以删除此表达式,或者==如果您需要大量仅包含一个空格字符的字符串,则可以使用此表达式:
String.prototype.isEmpty = function() {
return this.length === 0 || this == " " || /^\s*$/.test(this);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8459 次 |
| 最近记录: |