【问题标题】:Search for a string with a point in JavaScript在 JavaScript 中搜索带点的字符串
【发布时间】:2018-11-25 10:02:38
【问题描述】:

当我尝试搜索带有点的字符串(即'1.')时,js 也指向带有逗号而不是点的子字符串。最好看例子:

'1,'.search('1.');        // 0
'xxx1,xxx'.search('1.');  // 3
// Normal behaviour
'1.'.search('1,');        // -1

有谁知道为什么 JavaScript 会这样? 有没有办法搜索准确传递的字符串?

【问题讨论】:

  • 在您的所有示例中,搜索字符串都与提供的字符串不匹配。您总是试图将1,1. 匹配,反之亦然。无论如何,使用正则表达式

标签: javascript string substring


【解决方案1】:

String.search 将正则表达式作为参数。

正则表达式通过any character评估.;你必须使用双反斜线 \\ 来逃避它。

console.log('1,'.search('1\\.'));

console.log('xxx1,xxx'.search('1\\.'));
console.log('xxx1.xxx'.search('1\\.'));

console.log('1.'.search('1,'));  

【讨论】:

    【解决方案2】:

    使用indexOf()

    let str = "abc1,231.4";
    console.log(str.indexOf("1."));

    【讨论】:

    • 更简单快捷;非常适合这种情况。应该是公认的答案。
    【解决方案3】:

    indexOf() 方法在这种情况下应该可以正常工作

    '1,'.indexOf('1.');  
    

    上面的代码应该返回-1

    【讨论】:

    • 4 分钟前发布了相同的答案。这有什么好?
    【解决方案4】:

    根据docs

    search() 方法执行搜索正则表达式与此 String 对象之间的匹配项。

    . 在正则表达式中有特殊的含义。您需要在匹配之前转义 .。请尝试以下操作:

    console.log('xxx1,xxx'.search('1\\.'));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-12
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-18
      • 2017-02-16
      • 1970-01-01
      相关资源
      最近更新 更多