如何在String数组中搜索字符串

bal*_*log 69 c# asp.net

我需要在字符串数组中搜索一个字符串.我不想在其中使用任何循环

string [] arr = {"One","Two","Three"};

string theString = "One"
Run Code Online (Sandbox Code Playgroud)

我需要检查arr中是否存在var变量.

Mar*_*ell 118

好吧,有些东西必须要看,循环比递归更有效(因为尾端递归没有完全实现)...所以如果你只是不想自己循环,那么下列之一:

bool has = arr.Contains(var); // .NET 3.5
Run Code Online (Sandbox Code Playgroud)

要么

bool has = Array.IndexOf(arr, var) >= 0;
Run Code Online (Sandbox Code Playgroud)

有关信息:避免使用var之类的名称 - 这是C#3.0中的关键字.


Tam*_*mir 64

前面提到的每个方法都在内部或外部循环,因此如何实现它并不重要.这是查找目标字符串的所有引用的另一个示例

       string [] arr = {"One","Two","Three"};
       var target = "One";
       var results = Array.FindAll(arr, s => s.Equals(target));
Run Code Online (Sandbox Code Playgroud)

  • 我认为Array.Exists()更好. (7认同)

Zom*_*eep 25

它必须是一个字符串[]?List <String>可以满足您的需求.

List<String> testing = new List<String>();
testing.Add("One");
testing.Add("Two");
testing.Add("Three");
testing.Add("Mouse");
bool inList = testing.Contains("Mouse");
Run Code Online (Sandbox Code Playgroud)


moh*_*edn 12

bool exists = arr.Contains("One");
Run Code Online (Sandbox Code Playgroud)


小智 11

我认为这是更好地使用Array.ExistsArray.FindAll.


小智 9

它非常简单.我总是使用此代码从字符串数组中搜索字符串

string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
int pos = Array.IndexOf(stringArray, value);
if (pos > -1)
{
    return true;
}
else
{
    return false;
}
Run Code Online (Sandbox Code Playgroud)


GvS*_*GvS 6

如果数组已排序,则可以使用BinarySearch.这是一个O(log n)操作,因此循环速度更快.如果您需要应用多个搜索并且速度是一个问题,您可以在使用之前对其进行排序(或复制).


Vol*_*erK 5

每个实现 IList 的类都有一个方法Contains(Object value)。System.Array 也是如此。