检查单个字符是否是空格?

edb*_*ras 35 javascript

检查单个字符是否为空格的最佳方法是什么?

我知道如何通过正则表达式检查这一点.

但如果我只有一个角色,我不确定这是否是最好的方法.

是否有更好的方法(关于性能)来检查它是否是空格?

如果我做这样的事情.我会想念像标签这样的白色空间吗?

if (ch == ' ') {
    ...
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*oph 40

如果您只想测试某些空白字符,请手动执行,否则,使用正则表达式,即

/\s/.test(ch)
Run Code Online (Sandbox Code Playgroud)

请记住,不同的浏览器匹配不同的字符,例如在Firefox中,\s相当于()

[ \f\n\r\t\v\u00A0\u2028\u2029]
Run Code Online (Sandbox Code Playgroud)

而在Internet Explorer中,它应该是()

[ \f\n\r\t\v]
Run Code Online (Sandbox Code Playgroud)

MSDN页面实际上忘记了空间;)

  • 请注意,从那时起两个链接页面都已更新 - 现在MSDN包含空间,Mozilla包含其他Unicode空白字符 (3认同)

jak*_*ake 14

正则表达式方法是一个可靠的方法.但这就是我懒惰时忘记正确的正则表达式语法:

str.trim() === '' ? alert('just whitespace') : alert('not whitespace');
Run Code Online (Sandbox Code Playgroud)


Ale*_*ett 13

我已经引用了PHP的trim函数匹配的空白字符集而没有羞耻(减去空字节,我不知道浏览器将如何处理它).

if (' \t\n\r\v'.indexOf(ch) > -1) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这看起来像对我来说过早优化.


Pet*_*ter 6

这包括空格,制表符和换行符:

if ((ch == ' ') || (ch == '\t') || (ch == '\n'))
Run Code Online (Sandbox Code Playgroud)

这应该是性能最好的.首先,把你期望的空白字符放在最有可能的位置.

如果表现真的很重要,可能最好考虑比这样的​​个别运营更大的图景......

  • 使用五个手动比较实际上比任何选项都要快:http://jsperf.com/whitespace-character/5 (2认同)

Chr*_*use 5

虽然不完全正确,但我使用了这个实用且快速的解决方案:

if (ch.charCodeAt(0) <= 32) {...
Run Code Online (Sandbox Code Playgroud)