如何在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
相关产品推荐
相关产品推荐

