代码之家  ›  专栏  ›  技术社区  ›  edbras

检查单个字符是否为空白?

  •  29
  • edbras  · 技术社区  · 15 年前

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

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

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

    如果我做这样的事。我想我会想念空白的标签吗?

    if (ch == ' ') {
        ...
    }
    
    7 回复  |  直到 6 年前
        1
  •  41
  •   Christoph    15 年前

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

    /\s/.test(ch)
    

    \s 相当于( source )

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

    source )

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

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

        2
  •  15
  •   jake    7 年前

    regex方法是一条坚实的道路。但是,当我懒得忘记正确的regex语法时,我会这样做:

    str.trim() === '' ? alert('just whitespace') : alert('not whitespace');
    
        3
  •  13
  •   Alex Barrett    15 年前

    我引用了一组与PHP匹配的空白字符 trim 函数没有羞耻感(减去空字节,我不知道浏览器将如何处理)。

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

        4
  •  6
  •   Peter    15 年前

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

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

    这应该是最好的表现。首先,把最有可能出现的空白字符放进去。

    如果性能真的很重要,也许最好考虑更大的范围,而不是像这样的单个操作。。。

        5
  •  4
  •   Christian d'Heureuse    6 年前

    if (ch.charCodeAt(0) <= 32) {...
    
        6
  •  1
  •   austin cheney austin cheney    15 年前
    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.
    
        7
  •  1
  •   Saleem Siddiqui    5 年前

    @上面杰克的答案——使用 trim()

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

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

    不幸的是,比较 <=32 不会捕获所有空白字符。例如; 0xA0 indexOf() 像绳子一样 "\t\n\r\v" 因为同样的原因是不正确的。

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

        8
  •  0
  •   Shashidhar Reddy    4 年前
    function hasWhiteSpace(s) {
      return /\s/g.test(s);
    }
    

    这样就行了

    也可以使用此indexOf():

    function hasWhiteSpace(s) {
      return s.indexOf(' ') >= 0;
    }
    
        9
  •  -3
  •   user2077724    8 年前

    这个怎么样: