我有一个字符串列表
var list = ['my name is', 'people call me', 'i am', 'you can call me'];
在执行if语句之前,我想检查文本是否包含我的字符串列表中的至少一个表达式
if (text.toLowerCase().contains("my name is") ||
text.toLowerCase().contains("people call me") || text.toLowerCase().contains("i am")) {
//do something
}
现在这就是我正在做的,但从长远来看,它不会起作用,因为我的列表会越来越长
如果text.contains(anyStringfromMyList)
编辑:我还想知道(返回)这个列表中的哪个项目是在text
中找到的🙏
可以使用任何方法列表的
var list = ['my name is', 'people call me', 'i am', 'you can call me'];
String text = "my name is Adam";
if (list.any((item) => text.toLowerCase().contains(item))) {
//do something
}
或使用regex
var regex = new RegExp("\b(?:${list.join('|')})\b", caseSensitive: false);
if (regex.hasMatch(text)) {
//do something
}
获取查找项的值:
String foundText = list.firstWhere((item) => text.toLowerCase().contains(item), orElse: () => "");
if (foundText != "") {
print(foundText);
}
用于获取所有查找项的值:
List<String> foundItems = list.where((item) => text.toLowerCase().contains(item)).toList();
if (foundItems.isNotEmpty) {
print(foundItems);
}