Javascript 检查单个字符是否为空白?
检查单个字符是否为空白的最佳方法是什么 我知道如何通过正则表达式检查这个 但如果我只有一个角色,我不确定这是否是最好的方式 是否有更好的方法(关于性能)来检查它是否是空白 如果我做这样的事。我想我会怀念空白,就像标签一样Javascript 检查单个字符是否为空白?,javascript,Javascript,检查单个字符是否为空白的最佳方法是什么 我知道如何通过正则表达式检查这个 但如果我只有一个角色,我不确定这是否是最好的方式 是否有更好的方法(关于性能)来检查它是否是空白 如果我做这样的事。我想我会怀念空白,就像标签一样 if (ch == ' ') { ... } 这包括空格、制表符和换行符: if ((ch == ' ') || (ch == '\t') || (ch == '\n')) 这对性能来说应该是最好的。首先输入您最可能使用的空白字符 如果性能非常重要,最好考虑比像这样
if (ch == ' ') {
...
}
这包括空格、制表符和换行符:
if ((ch == ' ') || (ch == '\t') || (ch == '\n'))
这对性能来说应该是最好的。首先输入您最可能使用的空白字符
如果性能非常重要,最好考虑比像这样的单个操作更大的图片…
< p>我引用了一组空白字符,它由PHP的函数匹配而不加羞耻(减去空字节,我不知道浏览器将如何处理它)。但对我来说,这似乎是过早的优化。如果您只想测试某些空白字符,请手动执行,否则,请使用正则表达式,即
/\s/.test(ch)
请记住,不同的浏览器匹配不同的字符,例如在Firefox中,\s
相当于()
而在Internet Explorer中,它应该是()
MSDN页面实际上忘记了空格;)
这个小函数允许您输入一个长度可变的字符串作为参数,如果第一个字符是空格,它将报告“true”,否则报告“false”。您可以使用indexOf或charAt方法轻松地将字符串中的任何字符放入函数中。示例:
var str = "Today I wish I were not in Afghanistan.";
testWhite(str.charAt(9)); // This would test character "i" and would return false.
testWhite(str.charAt(str.indexOf("I") + 1)); // This would return true.
regex方法是一条坚实的道路。但是,当我懒惰并且忘记了正确的正则表达式语法时,我会这样做:
str.trim() === '' ? alert('just whitespace') : alert('not whitespace');
这个怎么样:
((1L>31)和0x100002600L)!=0L虽然它并不完全正确,但我使用这种实用且快速的解决方案:
if (ch.charCodeAt(0) <= 32) {...
if(ch.charCodeAt(0)@jake的答案——使用trim()
方法——是最好的选择。如果您有一个字符ch作为十六进制数:
String.fromCharCode(ch).trim() === ""
将为所有空白字符返回true
不幸的是,类似于32的比较。出于同样的原因,使用indexOf()
和类似“\t\n\r\v”
的字符串进行搜索将不正确
下面是一个简短的JS代码片段,说明了这一点:
这会奏效的
或
您还可以使用此indexOf():
还有'\r'和'\r\n',但我认为使用正则表达式比使用带有5个条件的if更好。我认为它会更快。好吧,在这种情况下,最好是分析。根据每个字符的可能性,短路|
实际上可能会使它更快。这样做的功能是空格(ch){return“\t\n\r\v”.indexOf(ch)!=-1;}感谢所有的答案。我很清楚,最好使用RegExp…比抱歉更安全;)使用五次手动比较实际上比任何选项都快:@kangax:很高兴知道;至少对于IE来说,文档与实际结果一致(省略空格)请注意,从那时起,两个链接页面都已更新—MSDN页面现在包含空格,而Mozilla页面包含额外的Unicode空格字符。像这样的页面比使用RegExp:I使用((c=0)| | c==127)要快一点。获取ascii中的所有空格和控制字符。抱歉,这不是javascript。这是C。这是一个关于javascript的问题。这可能会更快。
var str = "Today I wish I were not in Afghanistan.";
testWhite(str.charAt(9)); // This would test character "i" and would return false.
testWhite(str.charAt(str.indexOf("I") + 1)); // This would return true.
str.trim() === '' ? alert('just whitespace') : alert('not whitespace');
if (ch.charCodeAt(0) <= 32) {...
String.fromCharCode(ch).trim() === ""
function hasWhiteSpace(s) {
return /\s/g.test(s);
}
function hasWhiteSpace(s) {
return s.indexOf(' ') >= 0;
}