有几种方法可以做到这一点。一个与您所做的非常接近;但是您需要.toLowerCase()
在匹配字符串之前调用。另一种是使用正则表达式,你可以告诉它忽略大小写。
这是一个例子:
final breakfastWords = ["waffle", "toast", "pancake", "omelette", "Omelet"];
final lunchWords = ["salad", "sandwich", "soup", "burger", "pasta", "gyro", "hoagie"];
final dinnerWords = ["burger", "steak", "pork", "ribs"];
final sideWords = ["dressing", "drink", "mustard", "jelly", "peanuts", "coleslaw"];
final sideReg = RegExp("(?:dressing|drink|mustard|jelly|peanuts|coleslaw)", caseSensitive: false);
bool isBreakfast(String string) {
String toTest = string.toLowerCase();
return breakfastWords.any((word) => toTest.contains(word));
}
bool isLunch(String string) {
String toTest = string.toLowerCase();
return lunchWords.any((word) => toTest.contains(word));
}
bool isDinner(String string) {
String toTest = string.toLowerCase();
return dinnerWords.any((word) => toTest.contains(word));
}
bool isSide(String string) {
String toTest = string.toLowerCase();
return sideWords.any((word) => toTest.contains(word));
}
bool isSideRegex(String string) {
return sideReg.hasMatch(string);
}
void main() {
String testString = "Farmhouse Sides, Coleslaw";
if(isBreakfast(testString)) {
print("It's breakfast");
}
if(isLunch(testString)) {
print("It's lunch");
}
if(isDinner(testString)) {
print("It's dinner");
}
if(isSide(testString)) {
print("It's a side");
}
if(isSideRegex(testString)) {
print("It's a side found with regex");
}
}final breakfastWords = ["waffle", "toast", "pancake", "omelette", "Omelet"];
final lunchWords = ["salad", "sandwich", "soup", "burger", "pasta", "gyro", "hoagie"];
final dinnerWords = ["burger", "steak", "pork", "ribs"];
final sideWords = ["dressing", "drink", "mustard", "jelly", "peanuts", "coleslaw"];
final sideReg = RegExp("(?:dressing|drink|mustard|jelly|peanuts|coleslaw)", caseSensitive: false);
bool isBreakfast(String string) {
String toTest = string.toLowerCase();
return breakfastWords.any((word) => toTest.contains(word));
}
bool isLunch(String string) {
String toTest = string.toLowerCase();
return lunchWords.any((word) => toTest.contains(word));
}
bool isDinner(String string) {
String toTest = string.toLowerCase();
return dinnerWords.any((word) => toTest.contains(word));
}
bool isSide(String string) {
String toTest = string.toLowerCase();
return sideWords.any((word) => toTest.contains(word));
}
bool isSideRegex(String string) {
return sideReg.hasMatch(string);
}
void main() {
String testString = "Farmhouse Sides, Coleslaw";
if(isBreakfast(testString)) {
print("It's breakfast");
}
if(isLunch(testString)) {
print("It's lunch");
}
if(isDinner(testString)) {
print("It's dinner");
}
if(isSide(testString)) {
print("It's a side");
}
if(isSideRegex(testString)) {
print("It's a side found with regex");
}
}
另请注意,您可以直接从字符串中形成正则表达式:
final sideReg = RegExp("(?:${sideWords.join("|")})", caseSensitive: false);