C#检查字符串是否包含字符串数组中的任何匹配项

ray*_*ran 11 c# arrays string contains

检查字符串是否包含C#中字符串数组中的任何匹配项的最快方法是什么?我可以使用循环来完成它,但我认为这太慢了.

Est*_*aya 23

使用LINQ:

 return array.Any(s => s.Equals(myString))
Run Code Online (Sandbox Code Playgroud)

当然,你可能想要考虑文化和案例,但这是一般的想法.此外,如果"匹配"不等于你的意思,你可以随时使用"匹配"所需的功能.


Som*_*mer 12

我真的不能告诉你这是否是绝对最快的方式,但我通常做的一个方法是:

这将检查字符串是否包含数组中的任何字符串:

string[] myStrings = { "a", "b", "c" };
string checkThis = "abc";

if (myStrings.Any(checkThis.Contains))
{
    MessageBox.Show("checkThis contains a string from string array myStrings.");
}
Run Code Online (Sandbox Code Playgroud)

要检查字符串是否包含数组的所有字符串(元素),只需myStrings.Any将if语句更改为myStrings.All.

我不知道这是什么类型的应用程序,但我经常需要使用:

if (myStrings.Any(checkThis.ToLowerInvariant().Contains))
Run Code Online (Sandbox Code Playgroud)

因此,如果您要检查用户输入,那么无论用户是否输入大写字母中的字符串,这都可以使用ToLowerInvariant()轻松反转.

希望这有帮助!


小智 6

这对我很好:

string[] characters = new string[] { ".", ",", "'" };
bool contains = characters.Any(c => word.Contains(c));
Run Code Online (Sandbox Code Playgroud)


Bre*_*ias 5

您可以将字符串与正则表达式或语句组合起来,然后“一次完成”,但从技术上讲,正则表达式仍会在内部执行循环。最终,循环是必要的。

  • 有些人在遇到问题时会想“我知道,我会使用正则表达式”。现在他们有两个问题。 (7认同)