字符串如何匹配字符串
本帖最后由 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>
单字符已经可以匹配,但是字符串匹配不知道怎么搞 是想匹配一段话是否符合还是什么意思?
这种情况更推荐使用正则进行匹配的 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>`); cxxjackie 发表于 2022-6-13 20:49
highlight这个函数的问题,let s of str这样遍历的是字符串,就是一个字符一个字符的,改成遍历keyword即可 ...
话说想看c大写文章了
好久没看到了
蛮喜欢看你写的! 李恒道 发表于 2022-6-13 21:26
话说想看c大写文章了
好久没看到了
蛮喜欢看你写的!
没什么好写的啊,都让道哥写完了!
页:
[1]