You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart/Flutter 如何检测文本是否包含列表中任意字符串并返回匹配项

解决方案

最简实现(返回第一个匹配到的元素)

用数组find()方法即可同时满足「判断是否命中」和「返回命中的具体元素」需求,代码如下:

// 统一维护匹配关键词列表,后续增删只需要改这个数组
const matchList = ['my name is', 'people call me', 'i am', 'you can call me'];
// 提前将输入文本转小写,避免重复执行转小写逻辑
const lowerText = text.toLowerCase();
// 查找第一个匹配的关键词,无匹配则返回undefined
const matchedKeyword = matchList.find(item => lowerText.includes(item.toLowerCase()));

if (matchedKeyword) {
  // 这里matchedKeyword就是匹配到的列表元素,可以直接使用
  // 你的业务逻辑
  console.log('匹配到的关键词:', matchedKeyword);
}

说明:

  • 关键词也做了转小写处理,兼容列表元素存在大小写混合的场景,如果你的列表元素固定全小写,可以省略item.toLowerCase()
  • 注意JS原生字符串没有contains方法,你原有代码里的方法名有误,正确的包含判断方法是includes

扩展实现(返回所有匹配到的元素)

如果需要获取所有命中的关键词,把find()替换为filter()即可:

const matchedKeywords = matchList.filter(item => lowerText.includes(item.toLowerCase()));
if (matchedKeywords.length > 0) {
  console.log('所有匹配到的关键词:', matchedKeywords);
  // 执行业务逻辑
}

旧环境兼容写法

如果运行环境不支持ES6的includes方法,可以替换为indexOf判断,效果完全一致:

// 把includes判断换成indexOf判断
const matchedKeyword = matchList.find(item => lowerText.indexOf(item.toLowerCase()) !== -1);

内容的提问来源于stack exchange,提问作者Sunshine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:18:00