有没有办法缩短我的if(word.Contains(" tree")|| word.Contains(" water")|| word.Contains(" sky&#34 ;))

时间:2015-06-18 13:02:58

标签: c# if-statement

相当于标题所说的内容,我得到了一个很大的if句 - 约5 Contains如果我重复这几次,这是不是很好看,有没有办法缩短这个?

if(word.Contains("tree") ||word.Contains("water")||word.Contains("sky")||word.Contains("lake")||word.Contains("plant"))
{
//do something
}

7 个答案:

答案 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)))