当前位置: 首页 > 面试题库 >

JavaScript中不区分大小写的字符串替换?

宋昕
2023-03-14
问题内容

我需要不区分大小写地突出显示JavaScript字符串中的给定关键字。

例如:

  • highlight("foobar Foo bar FOO", "foo") 应该回来 "<b>foo</b>bar <b>Foo</b> bar <b>FOO</b>"

我需要用于任何关键字的代码,因此使用像硬编码的正则表达式这样/foo/i的解决方案还不够。

最简单的方法是什么?

(这是标题中详述的更一般问题的实例,但我认为最好用一个具体,有用的示例来解决。)


问题答案:

可以 ,如果你准备搜索字符串使用正则表达式。在PHP中,例如有一个函数preg_quote,它用转义的版本替换字符串中的所有正则表达式字符。

这是javascript(source)的一个函数:

function preg_quote (str, delimiter) {
  //  discuss at: https://locutus.io/php/preg_quote/
  // original by: booeyOH
  // improved by: Ates Goral (https://magnetiq.com)
  // improved by: Kevin van Zonneveld (https://kvz.io)
  // improved by: Brett Zamir (https://brett-zamir.me)
  // bugfixed by: Onno Marsman (https://twitter.com/onnomarsman)
  //   example 1: preg_quote("$40")
  //   returns 1: '\\$40'
  //   example 2: preg_quote("*RRRING* Hello?")
  //   returns 2: '\\*RRRING\\* Hello\\?'
  //   example 3: preg_quote("\\.+*?[^]$(){}=!<>|:")
  //   returns 3: '\\\\\\.\\+\\*\\?\\[\\^\\]\\$\\(\\)\\{\\}\\=\\!\\<\\>\\|\\:'

  return (str + '')
    .replace(new RegExp('[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\' + (delimiter || '') + '-]', 'g'), '\\$&')
}

因此,您可以执行以下操作:

function highlight(str, search) {
    return str.replace(new RegExp("(" + preg_quote(search) + ")", 'gi'), "<b>$1</b>");
}


 类似资料:
  • 需要制作一个密码程序,用户在开始时设置密码,在程序停止前可以输入密码3次。该程序不能区分大小写。 程序按预期打印,但不区分大小写

  • 问题内容: 使用中的方法,如何使目标不区分大小写? 例如,它现在的工作方式: 如何使它替换(或如果有更合适的方法)不区分大小写,以便两个示例都返回“ Bar”? 问题答案: 输出: 值得一提的是,将第一个参数视为正则表达式模式,这可能会导致意外结果。要解决此问题,请按照注释中的建议使用。

  • 问题内容: 如何以不区分大小写的方式比较字符串? 例如,“ Go”和“ go”应视为相等。 问题答案: https://golang.org/pkg/strings/#EqualFold是您要寻找的功能。它的用法如下(来自链接文档的示例):

  • 问题内容: 如何以 不区分大小写的 方式在文件中搜索单词? 例如 如果我正在文件中搜索,如果文件包含更新,则搜索应将其选中并将其视为匹配项。 问题答案: 可以在忽略大小写的情况下检查两个字符串是否相等。它甚至可以与Unicode一起使用。有关更多信息,请参见http://golang.org/pkg/strings/#EqualFold。 http://play.golang.org/p/KDdI

  • 问题内容: 如何在JavaScript中执行不区分大小写的字符串比较? 问题答案: 最简单的方法(如果您不担心特殊的Unicode字符)是调用: