在C#中,检查一个字符串是否包含字符串数组中的任何匹配项的最快方法是什么?我可以使用循环来实现,但我认为这样做太慢了。
在C#中,检查一个字符串是否包含字符串数组中的任何匹配项的最快方法是什么?我可以使用循环来实现,但我认为这样做太慢了。
使用 LINQ:
return array.Any(s => s.Equals(myString))
当然,你可能需要考虑文化和情况,但这是一般的想法。 此外,如果 "matches" 不是指相等,你可以使用你需要用于“匹配”的函数。
我真的不能告诉你这是否绝对是最快的方法,但我通常会采用以下其中一种方式:
这将检查字符串是否包含数组中的任何字符串:
string[] myStrings = { "a", "b", "c" };
string checkThis = "abc";
if (myStrings.Any(checkThis.Contains))
{
MessageBox.Show("checkThis contains a string from string array myStrings.");
}
要检查字符串是否包含数组中的所有字符串(元素),只需将 if 语句中的 myStrings.Any
改为 myStrings.All
。
我不知道这是什么应用程序,但我经常需要使用:
if (myStrings.Any(checkThis.ToLowerInvariant().Contains))
如果您正在检查用户输入,那么无论用户输入字符串是大写还是小写,都不会有影响,因为可以使用ToLowerInvariant()轻松地将其反转。
希望这可以帮到你!
对我来说这很好:
string[] characters = new string[] { ".", ",", "'" };
bool contains = characters.Any(c => word.Contains(c));
Where
语句中起作用的。 - Vahid AmiriHashSet<string>
。与循环的O(N)相比,HashSet<T>.Contains
是一个O(1)操作。