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

Flutter如何实现字符串列表的无序关键词搜索?

Flutter 实现无序关键词的列表搜索

要实现不要求关键词顺序的搜索,核心思路是把搜索词拆分成独立关键词,再检查列表项是否包含所有关键词(加入大小写不敏感处理更贴合实际使用场景)。

具体实现步骤

  1. 处理搜索输入:将搜索字符串按空格分割成关键词数组,同时统一转为小写(避免大小写差异导致匹配失败)。
  2. 过滤原列表:遍历每个列表项,将其也转为小写后,验证是否包含所有拆分后的关键词。

代码示例

List<String> a = [
  "Fracture of right arm", 
  "Fracture of left arm", 
  "Fracture of right leg", 
  "Fracture of left leg",
];

String searchQuery = "fracture right";

// 拆分关键词并统一转为小写(兼容多空格分隔的情况)
List<String> keywords = searchQuery.toLowerCase().split(RegExp(r'\s+'));

// 过滤列表,保留包含所有关键词的项
List<String> results = a.where((item) {
  String lowerCaseItem = item.toLowerCase();
  return keywords.every((keyword) => lowerCaseItem.contains(keyword));
}).toList();

// 打印结果
print(results);

结果验证

输入fracture right时,代码会返回:

[Fracture of right arm, Fracture of right leg]

扩展优化

  • 若需要支持模糊前缀匹配(比如输入frac rig也能匹配结果),可以把contains替换为startsWith或正则表达式匹配,但要注意大量数据下的性能问题。
  • 如需处理带空格的完整关键词(比如搜索"right arm"),可以调整拆分逻辑,支持用引号包裹的内容作为单个关键词,这属于进阶场景,基础搜索用空格拆分即可满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:35:31