Dart中如何判断字符串是否包含搜索输入的所有单词
Dart 实现多单词全匹配搜索功能
实现思路
- 统一转换为小写匹配,避免大小写差异导致匹配失败(适配示例中
Flutter和flutter的匹配场景) - 将原字符串、搜索字符串均按空格拆分为独立单词集合,自动去重
- 校验搜索单词集合是否为原字符串单词集合的子集,只要所有搜索单词都存在就返回true
完整实现代码
支持命名参数调用,完全匹配你的示例调用规则:
String myString1 = "I love Flutter"; String myString2 = "I like Flutter"; String searchValue1 = "I flutter"; String searchValue2 = "I love flutter"; bool searchFunction({required String myString, required String searchValue}) { // 统一转小写后拆分单词为集合 final sourceWords = myString.toLowerCase().split(' ').toSet(); final searchWords = searchValue.toLowerCase().split(' ').toSet(); // 判断所有搜索单词都存在于原字符串中 return searchWords.every((word) => sourceWords.contains(word)); }
运行结果验证
和你给出的预期结果完全一致:
searchFunction(myString: myString1, searchValue: searchValue1); // true searchFunction(myString: myString2, searchValue: searchValue1); // true searchFunction(myString: myString1, searchValue: searchValue2); // true searchFunction(myString: myString2, searchValue: searchValue2); // false
内容的提问来源于stack exchange,提问作者user3234809
相关产品推荐
相关产品推荐

