javascript - 如何检查字符串是否包含数组中的某些单词?
问题描述
假设我有两个数组:
const rejectBill = ['cancel', 'delete', 'discard', 'erroneously']
const readBill = ['bill','account','amount']
我有一个字符串,
const stringBill = 'Read bill from text to be cancelled'
我想检查 bill 是否包含来自 readBill 的单词然后返回 true,但如果它还包含来自 rejectBill 的单词则返回 false。
为此,我尝试了:
let stringSatus = readBill.some(keyword => stringBill.toLowerCase().includes(keyword.toLowerCase())) &&
!rejectBill.some(keyword => stringBill.toLowerCase().includes(keyword.toLowerCase()))
但是在 stringSatus 的控制台上,它给出了错误。
当字符串包含来自 readBill 数组的单词不包含来自rejectBill 数组的单词时,我希望 stringStatus 为真,当字符串包含来自rejectBill 的单词时为假。
如果有人需要更多信息,请告诉我。
解决方案
使用正则表达式
我regex
根据string[]
和测试创建了一个动态的,如果string
通过regex
.
const rejectBill = ['cancel', 'delete', 'discard', 'erroneously'];
const readBill = ['bill', 'account', 'amount'];
const stringBill = 'Read bill from text to be cancelled';
var rejectBillRegex = new RegExp(rejectBill.map(t => `\\b${t}\\b`).join('|'), 'i'),
readBillRegex = new RegExp(readBill.map(t => `\\b${t}\\b`).join('|'), 'i');
var stringSatus = readBillRegex.test(stringBill) && !rejectBillRegex.test(stringBill);
console.log(stringSatus)
推荐阅读
- javascript - 更改选择时更改输入值
- azure - Azure Databricks 表未刷新
- java - 使用 GeckoDriver 和 Firefox 出现错误“org.openqa.selenium.WebDriverException: java.net.ConnectException: 无法连接到 localhost/”
- ruby-on-rails - Rails 5 远程形式的间歇性 ActionController::UnknownFormat 错误
- powershell - 解析 Powershell 变量
- javascript - 内容类型八位字节流并在后端处理它
- angular - 等待 http req 单元完成角度(服务)
- html - 将自定义 css 添加到树枝模板,样式不适用
- angular - 角度 6 HttpInterceptor 未触发
- r - 为 ggplot facet_wrap 设置数据