我需要一个JavaScript函数来告诉我字符串对象是否为空。说到“空”,我的意思是它不全是空格字符。我写了这个原型:
String.prototype.isEmpty = function() {
return this.length === 0 || this === " " || this.test(/^\s*$/);
}这样可以吗?
有没有性能更好的版本?
发布于 2010-09-05 15:00:53
使用
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
发布于 2010-09-05 11:11:05
看起来您需要使用/^\s*$/.test(this)而不是this.test(/^\s*$/)。strings没有test()方法,除非您正在使用实现此方法的某个JavaScript库。
/^\s*$/.test(this)已经足够了,但是如果前两个表达式中的任何一个的计算结果为真,那么前两个表达式就会短路,而不必测试正则表达式。这应该是非常有效的。
正如@Matthew Crumley在上面的注释中指出的那样,您的this === " "表达式将始终计算为false。您可以删除此表达式,或者如果您希望看到大量仅包含单个空格字符的字符串,则可以使用==:
String.prototype.isEmpty = function() {
return this.length === 0 || this == " " || /^\s*$/.test(this);
}发布于 2010-09-05 11:59:31
String.prototype.isEmpty = function() {
return this.length == 0 || /^\s*$/.test(this);
}在255个字符中(不考虑编码大于255的Unicode字符),长度为1的字符串有可能包含空格字符。考虑长度大于1的字符串,这种可能性会更低。
https://stackoverflow.com/questions/3644853
复制相似问题