我想使用c#检查字符串值是否包含字符串数组中的单词。例如,

string stringToCheck = "text1text2text3";

string[] stringArray = { "text1", "someothertext", etc... };

if(stringToCheck.contains stringArray) //one of the items?
{

}

我如何检查字符串值'stringToCheck'是否包含数组中的一个词?


当前回答

方法如下:

using System.Linq;

if(stringArray.Any(stringToCheck.Contains))

/* or a bit longer: (stringArray.Any(s => stringToCheck.Contains(s))) */

这个函数检查stringToCheck是否包含stringArray的子字符串。如果你想确保它包含所有的子字符串,将Any更改为all:

if(stringArray.All(stringToCheck.Contains))

其他回答

⚠️ Note: this does not answer the question asked
The question asked is "how can I check if a sentence contains any word from a list of words?"
This answer checks if a list of words contains one particular word
  stringArray.ToList().Contains(stringToCheck)

在我的案例中,上述答案并不奏效。我正在检查数组中的字符串,并将其分配给布尔值。我修改了Anton Gogolev的答案,并删除了Any()方法,并将stringToCheck放在Contains()方法内。

bool isContain = stringArray.Contains(stringToCheck);
string [] lines = {"text1", "text2", "etc"};

bool bFound = lines.Any(x => x == "Your string to be searched");

如果搜索的字符串与数组'lines'中的任何元素匹配,则bFound设置为true。

这些解决方案大多数是正确的,但如果你需要检查值不区分大小写:

using System.Linq;
...
string stringToCheck = "text1text2text3";
string[] stringArray = { "text1", "someothertext"};

if(stringArray.Any(a=> String.Equals(a, stringToCheck, StringComparison.InvariantCultureIgnoreCase)) )
{
   //contains
}

if (stringArray.Any(w=> w.IndexOf(stringToCheck, StringComparison.InvariantCultureIgnoreCase)>=0))
{
   //contains
}

dotNetFiddle例子

一个不需要任何LINQ的简单解决方案:

String.Join(",", array).Contains(Value + ",");