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

string stringToCheck = "text1text2text3";

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

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

}

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


当前回答

使用LINQ和方法组将是最快和更紧凑的方法。

var arrayA = new[] {"element1", "element2"};
var arrayB = new[] {"element2", "element3"};

if (arrayB.Any(arrayA.Contains)) 
    return true;

其他回答

你也可以像Anton Gogolev建议的那样,检查stringArray1中的任何项是否与stringArray2中的任何项匹配:

using System.Linq;
if(stringArray1.Any(stringArray2.Contains))

同样,stringArray1中的所有项都匹配stringArray2中的所有项:

using System.Linq;
if(stringArray1.All(stringArray2.Contains))

方法如下:

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);

LINQ:

arrray。Any(x => word.Equals(x));

这是为了查看数组是否包含单词(精确匹配)。使用. contains作为子字符串,或者其他任何你可能需要应用的逻辑。

int result = Array.BinarySearch(list.ToArray(), typedString, StringComparer.OrdinalIgnoreCase);