当前位置:  开发笔记 > 编程语言 > 正文

字符串是否在数组中?

如何解决《字符串是否在数组中?》经验,为你挑选了5个好方法。

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方法).任何值类型肯定.



1> Dave Markle..:

只需使用已经内置的Contains()方法:

using System.Linq;

//...

string[] array = { "foo", "bar" };
if (array.Contains("foo")) {
    //...
}


您必须包含System.Linq才能使用此功能.
作为一个单行:`(new string [] {"foo","bar"}).包含("foo")`
甚至更短:`new [] {"foo","bar"} .Contains(foo)`
@Brad:那是因为它的扩展方法来自Enumerable.

2> Gabriel McAd..:

我知道这已经过时了,但我希望新读者知道有一种新的方法可以使用泛型和扩展方法来实现这一点.

你可以阅读我的博客文章,看看有关如何做到这一点的更多信息,但主要的想法是:

通过在代码中添加此扩展方法:

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方法).任何值类型肯定.



3> Noldorin..:

您只需使用Array.Exists函数(如果您使用的是.NET 3.5,则包含扩展方法,这稍微更方便).


下面是.NET 2.0的一个工作示例:if(Array.Exists(arrayToLookThrough,o => o == elementToSearchFor))

4> Andrew Hare..:

数组是否排序?如果是这样,你可以进行二分查找.这也是.NET实现. 如果对数组进行排序,那么二进制搜索将提高任何迭代解决方案的性能.



5> 小智..:

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

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有