如何使用Lodash实现字符串数组的部分匹配与完全匹配
实现Lodash支持完全+部分字符串匹配的分词处理
你当前的代码仅支持完全匹配,要同时实现部分匹配(比如用virus匹配viruses),只需修改匹配逻辑,用_.some()遍历关键词数组,检查分词是否包含目标关键词(忽略大小写)即可。
修改后的代码
const _ = require('lodash'); // 确保已引入Lodash const textToSearch = 'The broken ship that caught fire also had viruses onboard'; const arrayOfKeywords = ['virus', 'fire', 'broken']; const tokenize = text => text .split(/(\w+)/) .map(x => // 遍历关键词数组,检查当前分词是否包含任意关键词(忽略大小写) _.some(arrayOfKeywords, keyword => x.toLowerCase().includes(keyword.toLowerCase()) ) ? {content: x, type: 'keyword'} : x ); const tokens = tokenize(textToSearch); console.log(tokens);
逻辑说明
- 用
_.some()替代原有的_.includes():_.some()会遍历关键词数组,只要有一个关键词满足匹配条件就返回true - 匹配规则改为分词包含关键词(忽略大小写):既覆盖了完全匹配场景(比如
broken和关键词broken互相包含),也支持部分匹配场景(比如viruses包含virus) - 保留原有分词逻辑:通过
split(/(\w+)/)将文本拆分为单词和非单词字符,避免标点、空格等被误处理
输出效果
运行后,broken、fire、viruses都会被标记为keyword类型,其余内容保持原样。
内容的提问来源于stack exchange,提问作者MaylorTaylor
相关产品推荐
相关产品推荐

