string[]
查看它是否包含元素的最佳方法是什么.这是我的第一枪.但也许我有一些东西可以忽略.数组大小不超过200个元素.
bool isStringInArray(string[] strArray, string key) { for (int i = 0; i <= strArray.Length - 1; i++) if (strArray[i] == key) return true; return false; }
Dave Markle.. 194
只需使用已经内置的Contains()方法:
using System.Linq; //... string[] array = { "foo", "bar" }; if (array.Contains("foo")) { //... }
您必须包含System.Linq才能使用此功能. (54认同)
作为一个单行:`(new string [] {"foo","bar"}).包含("foo")` (7认同)
甚至更短:`new [] {"foo","bar"} .Contains(foo)` (6认同)
@Brad:那是因为它的扩展方法来自Enumerable. (4认同)
Gabriel McAd.. 24
我知道这已经过时了,但我希望新读者知道有一种新的方法可以使用泛型和扩展方法来实现这一点.
你可以阅读我的博客文章,看看有关如何做到这一点的更多信息,但主要的想法是:
通过在代码中添加此扩展方法:
public static bool IsIn(this T source, params T[] values) { return values.Contains(source); }
你可以像这样执行搜索:
string myStr = "str3"; bool found = myStr.IsIn("str1", "str2", "str3", "str4");
它适用于任何类型(只要你创建一个好的equals方法).任何值类型肯定.
只需使用已经内置的Contains()方法:
using System.Linq; //... string[] array = { "foo", "bar" }; if (array.Contains("foo")) { //... }
我知道这已经过时了,但我希望新读者知道有一种新的方法可以使用泛型和扩展方法来实现这一点.
你可以阅读我的博客文章,看看有关如何做到这一点的更多信息,但主要的想法是:
通过在代码中添加此扩展方法:
public static bool IsIn(this T source, params T[] values) { return values.Contains(source); }
你可以像这样执行搜索:
string myStr = "str3"; bool found = myStr.IsIn("str1", "str2", "str3", "str4");
它适用于任何类型(只要你创建一个好的equals方法).任何值类型肯定.
您只需使用Array.Exists函数(如果您使用的是.NET 3.5,则包含扩展方法,这稍微更方便).
数组是否排序?如果是这样,你可以进行二分查找.这也是.NET实现. 如果对数组进行排序,那么二进制搜索将提高任何迭代解决方案的性能.
Linq(s&g's):
var test = "This is the string I'm looking for"; var found = strArray.Any(x=>x == test);
或者,根据要求
var found = strArray.Any( x=>x.Equals(test, StringComparison.OrdinalIgnoreCase));