相当于标题所说的内容,我得到了一个很大的if句 - 约5 Contains
如果我重复这几次,这是不是很好看,有没有办法缩短这个?
if(word.Contains("tree") ||word.Contains("water")||word.Contains("sky")||word.Contains("lake")||word.Contains("plant"))
{
//do something
}
答案 0 :(得分:3)
只需使用术语定义一个数组并使用LINQ表达式:
string[] searchTerms = { "tree", "water", ...}
if (searchTerms.Any(p => word.Contains(p)) {
// do something
}
答案 1 :(得分:1)
你可以这样做:
if (new [] { "tree", "water", "sky", "lake", "plant", }.Any(w => word.Contains(w)))
{
//do something
}
答案 2 :(得分:1)
是的,但是数组中的关键字,并将其切换为
var words = new[]{"tree","water","sky","lake"};
if(words.Any(w => word.Contains(w))){
// do something
}
答案 3 :(得分:1)
您可以使用正则表达式:
if (Regex.IsMatch(word, "tree|water|sky|lake|plant")) {
// Do something
}
这种方法比使用Contains
更灵活,因为它可以让你找到全字匹配(即匹配“树”但不匹配“子树”,或“植物”而不是“植入”)
if (Regex.IsMatch(word, @"\b(tree|water|sky|lake|plant)\b")) {
// Do something
}
答案 4 :(得分:1)
您可能有十几种或多种 编码方式。我不太确定我会担心它会缩短代码,因为我担心它会让它变得可维护和可读。这样的事情,也许是:
gcAllowVeryLargeObjects
答案 5 :(得分:1)
xmlns:p="http://primefaces.org/ui"
答案 6 :(得分:1)
您可以使用split,然后使用任意
if("tree,water,sky,lake,plant".Split(',').ToList().Any(e=>word.Contains(e)))