Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查单个字符是否为空白?_Javascript - Fatal编程技术网

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;
}