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

时间:2009-09-30 08:44:42

标签: javascript

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

我知道如何通过正则表达式进行检查。

但如果我只有一个角色,我不确定这是否是最佳方式。

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

如果我做这样的事情。我想错过选项卡这样的白色空间吗?

if (ch == ' ') {
    ...
}

9 个答案:

答案 0 :(得分:40)

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

/\s/.test(ch)

请注意,不同的浏览器会匹配不同的字符,例如在Firefox中,\s相当于(source

[ \f\n\r\t\v\u00A0\u2028\u2029]

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

[ \f\n\r\t\v]

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

答案 1 :(得分:13)

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

if (' \t\n\r\v'.indexOf(ch) > -1) {
    // ...
}

这看起来像我过早的优化。

答案 2 :(得分:12)

正则表达式方法是一条可行的方法。但是这就是我懒惰时所做的事情,忘记了正确的正则表达式语法:

str.trim() === '' ? alert('just whitespace') : alert('not whitespace');

答案 3 :(得分:7)

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

if ((ch == ' ') || (ch == '\t') || (ch == '\n'))

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

如果表现真的很重要,最好考虑比这样的​​个人操作更大的图片......

答案 4 :(得分:3)

虽然并不完全正确,但我使用了这种务实而快速的解决方案:

if (ch.charCodeAt(0) <= 32) {...

答案 5 :(得分:1)

var testWhite = (x) {
    var white = new RegExp(/^\s$/);
    return white.test(x.charAt(0));
};

这个小函数允许你输入一个可变长度的字符串作为参数,如果第一个字符是空格,则报告“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.

答案 6 :(得分:1)

上面

@jake的答案-使用trim()方法-是最佳选择。如果您将单个字符ch作为十六进制数字:

String.fromCharCode(ch).trim() === ""

对于所有空白字符将返回true。

不幸的是,像<=32这样的比较不能捕获所有空白字符。例如; 0xA0(不间断空格)在Javascript中被视为空格,但是它大于32。出于相同的原因,使用indexOf()和类似"\t\n\r\v"的字符串进行搜索将是不正确的。

下面是一个简短的JS代码段,它说明了这一点:https://repl.it/@saleemsiddiqui/JavascriptStringTrim

答案 7 :(得分:0)

function hasWhiteSpace(s) {
  return /\s/g.test(s);
}

这将起作用

或 您还可以使用以下indexOf():

function hasWhiteSpace(s) {
  return s.indexOf(' ') >= 0;
}

答案 8 :(得分:-2)

这个怎么样: ((1L&lt;&lt; ch)&amp;((ch-64)&gt;&gt; 31)&amp; 0x100002600L)!= 0L