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

如何在Flutter中找出列表与字符串的公共子串?

在Flutter中实现标签与目标字符串的公共子串匹配功能

示例1

tags = ['what','play','school']
string = "what is your name?"

Output = ['what']

示例2

tags = ['what is','play football','school','food']
string = "what is your school name? Do you play football there?"

Output = ['what is','school',"play football"]

实现方案

你可以通过Dart的字符串方法直接实现该功能,核心逻辑是遍历标签列表,筛选出属于目标字符串子串的标签。

基础匹配(大小写敏感)

编写工具函数,利用contains方法检查标签是否存在于目标字符串中:

List<String> findMatchingTags(List<String> tags, String targetString) {
  return tags.where((tag) => targetString.contains(tag)).toList();
}

测试验证

验证示例1:

void main() {
  List<String> tags = ['what','play','school'];
  String target = "what is your name?";
  print(findMatchingTags(tags, target)); // 输出: [what]
}

验证示例2:

void main() {
  List<String> tags = ['what is','play football','school','food'];
  String target = "what is your school name? Do you play football there?";
  print(findMatchingTags(tags, target)); // 输出: [what is, school, play football]
}

忽略大小写的匹配

如果需要不区分大小写的匹配,可统一转换为小写(或大写)后再检查:

List<String> findMatchingTagsIgnoreCase(List<String> tags, String targetString) {
  final lowerTarget = targetString.toLowerCase();
  return tags.where((tag) => lowerTarget.contains(tag.toLowerCase())).toList();
}

内容的提问来源于stack exchange,提问作者Mst. Murshida Khnom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 01:06:20