我想使用c#检查字符串值是否包含字符串数组中的单词。例如,
string stringToCheck = "text1text2text3";
string[] stringArray = { "text1", "someothertext", etc... };
if(stringToCheck.contains stringArray) //one of the items?
{
}
我如何检查字符串值'stringToCheck'是否包含数组中的一个词?
我想使用c#检查字符串值是否包含字符串数组中的单词。例如,
string stringToCheck = "text1text2text3";
string[] stringArray = { "text1", "someothertext", etc... };
if(stringToCheck.contains stringArray) //one of the items?
{
}
我如何检查字符串值'stringToCheck'是否包含数组中的一个词?
当前回答
在我的案例中,上述答案并不奏效。我正在检查数组中的字符串,并将其分配给布尔值。我修改了Anton Gogolev的答案,并删除了Any()方法,并将stringToCheck放在Contains()方法内。
bool isContain = stringArray.Contains(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))
在我的案例中,上述答案并不奏效。我正在检查数组中的字符串,并将其分配给布尔值。我修改了Anton Gogolev的答案,并删除了Any()方法,并将stringToCheck放在Contains()方法内。
bool isContain = stringArray.Contains(stringToCheck);
你可以这样做:
string stringToCheck = "text1";
string[] stringArray = { "text1", "testtest", "test1test2", "test2text1" };
foreach (string x in stringArray)
{
if (stringToCheck.Contains(x))
{
// Process...
}
}
也许你正在寻找一个更好的解决方案……参考Anton Gogolev使用LINQ的答案。
也许是这样的:
string stringToCheck = "text1text2text3";
string[] stringArray = new string[] { "text1" };
if (Array.Exists<string>(stringArray, (Predicate<string>)delegate(string s) {
return stringToCheck.IndexOf(s, StringComparison.OrdinalIgnoreCase) > -1; })) {
Console.WriteLine("Found!");
}
LINQ:
arrray。Any(x => word.Equals(x));
这是为了查看数组是否包含单词(精确匹配)。使用. contains作为子字符串,或者其他任何你可能需要应用的逻辑。