player 发表于 2022-6-13 15:15:22

字符串如何匹配字符串

本帖最后由 player 于 2022-6-13 15:15 编辑

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div><span id="test" class="test">aqwery白金卡</span></div>
    <div><span id="test" class="test">kjbggfvn傻逼</span></div>
    <div><span id="test" class="test">1235五十多岁的sdwfcdv</span></div>
    <br>
</body>
<script>

    const keyword = ['a', 'b', 'c', 'd', 'e', 'f', '傻', '白金卡'];

    const highlight = (str) => {

      let result = '';
      for (let s of str) {

            if (keyword.includes(s)) {

                str = str.replace(s, `<strong>${s}</strong>`);

            }

      }
      result = str;
      return result;

    }

    const test = document.querySelectorAll('.test');

    for (let t of test) {

      t.innerHTML =highlight(t.textContent);

    }

    const strongDom = document.querySelectorAll('.test strong')

    if (strongDom.length > 0) {

      for (let dom of strongDom) {

            dom.style.backgroundColor = 'yellow';
      }

    }



</script>

</html>

单字符已经可以匹配,但是字符串匹配不知道怎么搞

李恒道 发表于 2022-6-13 17:52:23

是想匹配一段话是否符合还是什么意思?
这种情况更推荐使用正则进行匹配的

cxxjackie 发表于 2022-6-13 20:49:01

highlight这个函数的问题,let s of str这样遍历的是字符串,就是一个字符一个字符的,改成遍历keyword即可:
for (let s of keyword) {
    //不需要if判断,replace在不符合条件时会返回原字符串
    str = str.replace(s, `<strong>${s}</strong>`);
}
也可以用正则解决,replace的第一个参数可以是正则表达式,第二个参数可以是处理函数,参考:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/replace
当正则表达式指定g模式时,replace将替换所有符合项,相当于replaceAll效果,代码如下:
const re = new RegExp(keyword.join('|'), 'g');
str = str.replace(re, match => `<strong>${match}</strong>`);

李恒道 发表于 2022-6-13 21:26:54

cxxjackie 发表于 2022-6-13 20:49
highlight这个函数的问题,let s of str这样遍历的是字符串,就是一个字符一个字符的,改成遍历keyword即可 ...

话说想看c大写文章了
好久没看到了
蛮喜欢看你写的!

cxxjackie 发表于 2022-6-14 11:17:08

李恒道 发表于 2022-6-13 21:26
话说想看c大写文章了
好久没看到了
蛮喜欢看你写的!

没什么好写的啊,都让道哥写完了!
页: [1]
查看完整版本: 字符串如何匹配字符串