【问题标题】:JavaScript Search string errorJavaScript 搜索字符串错误
【发布时间】:2014-02-09 06:58:25
【问题描述】:

我的问题在于 javascript 搜索字符串函数。我无法在我的字符串中找到符号“^”。 例如:

string = "2^3";
n = string.search("^");
console.log(n);

在此示例中,它将记录 i = "0"。 但是“^”在“1”中。 这适用于除插入符号 ('^') 之外的任何其他搜索。

谁能帮我解决这个问题?

【问题讨论】:

    标签: javascript string search caret


    【解决方案1】:

    来自MDN

    search() 方法执行在 regular 之间的匹配搜索 表达式和这个String对象。

    str.search(regexp)
    

    所以它需要一个正则表达式。 ^ 是一个正则表达式特殊字符。你需要逃避它:

    n = string.search("\\^");
    

    或者简单地使用正则表达式:

    n = string.search(/\^/);
    

    【讨论】:

    • 谢谢!真的很有帮助!
    【解决方案2】:

    根据String.prototype.search 文档,传递的第一个参数将被视为正则表达式。

    正则表达式

    一个正则表达式对象。如果一个非正则表达式对象 obj 是 通过,它通过使用 new 隐式转换为 RegExp 正则表达式(obj)。

    因此,您传递的字符串被转换为RegExp 对象和正则表达式中的^,表示第一个字符。因此,它返回第一个字符的索引,0

    你实际上必须像这样\\^ 逃避^

    var inputString = "2^3";
    var n = inputString.search("\\^");
    console.log(n);
    

    输出

    1
    

    【讨论】:

      【解决方案3】:

      它需要一个正则表达式。没有特殊字符的字符串看起来和正则表达式一样,但是当有特殊字符时就不是这样了。

      <script>
      
      string = "2^3";
      n = string.search(/\^/);
      console.log(n); //1
      
      </script>
      

      【讨论】:

        【解决方案4】:

        其他答案已经解释了为什么您的代码不起作用。然而缺少最简单的解决方案:使用.indexOf 而不是.search

        var n = inputString.indexOf("^");
        

        【讨论】:

          猜你喜欢
          • 2013-04-13
          • 1970-01-01
          • 1970-01-01
          • 2013-06-26
          • 2013-03-18
          • 2013-11-10
          • 2019-05-12
          • 1970-01-01
          • 2023-02-02
          相关资源
          最近更新 更多