Answers:
您可以使用Array.IndexOf方法:
string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
int pos = Array.IndexOf(stringArray, value);
if (pos > -1)
{
// the array contains the string and the pos variable
// will have its position in the array
}
Array.IndexOf
关心大写?有"text1" == "TEXT1"
吗?
Array.IndexOf
返回−1
仅当索引为0,有界的。这种情况会中断,所以要注意!var a = Array.CreateInstance(typeof(int),new int[] { 2 }, new int[] { 1 }); a.SetValue(1, 1); Console.WriteLine(Array.IndexOf(a, 26)); // 0
var index = Array.FindIndex(stringArray, x => x == value)
我们也可以使用Exists
:
string[] array = { "cat", "dog", "perl" };
// Use Array.Exists in different ways.
bool a = Array.Exists(array, element => element == "perl");
bool c = Array.Exists(array, element => element.StartsWith("d"));
bool d = Array.Exists(array, element => element.StartsWith("x"));
char
无法转换为的消息System.Predicate<char>
编辑:我没有注意到您也需要这个职位。您不能IndexOf
直接在数组类型的值上使用,因为它是显式实现的。但是,您可以使用:
IList<string> arrayAsList = (IList<string>) stringArray;
int index = arrayAsList.IndexOf(value);
if (index != -1)
{
...
}
(这类似于调用Array.IndexOf
按照达林的答案-只是一种替代方法,为什么这不是很清楚,我是在阵列中明确实现,但没关系...)IList<T>.IndexOf
if (months.Contains(model.Month))
IMO检查数组是否包含给定值的最佳方法是使用System.Collections.Generic.IList<T>.Contains(T item)
以下方法:
((IList<string>)stringArray).Contains(value)
完整的代码示例:
string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
if (((IList<string>)stringArray).Contains(value)) Console.WriteLine("The array contains "+value);
else Console.WriteLine("The given string was not found in array.");
T[]
数组私下实现的一些方法List<T>
,例如Count和Contains。因为这是一个显式的(私有)实现,所以如果不先转换数组就无法使用这些方法。这不仅适用于字符串-您可以使用此技巧来检查任何类型的数组是否包含任何元素,只要该元素的类实现IComparable。
请记住,并非所有IList<T>
方法都以这种方式工作。尝试IList<T>
在数组上使用的Add方法将失败。
您可以尝试一下,它查找包含该元素的索引,并将索引号设置为int,然后检查int是否大于-1,因此,如果它为0或更大,则意味着找到了一个索引-数组基于0。
string[] Selection = {"First", "Second", "Third", "Fourth"};
string Valid = "Third"; // You can change this to a Console.ReadLine() to
//use user input
int temp = Array.IndexOf(Selection, Valid); // it gets the index of 'Valid',
// in our case it's "Third"
if (temp > -1)
Console.WriteLine("Valid selection");
}
else
{
Console.WriteLine("Not a valid selection");
}
string x ="Hi ,World";
string y = x;
char[] whitespace = new char[]{ ' ',\t'};
string[] fooArray = y.Split(whitespace); // now you have an array of 3 strings
y = String.Join(" ", fooArray);
string[] target = { "Hi", "World", "VW_Slep" };
for (int i = 0; i < target.Length; i++)
{
string v = target[i];
string results = Array.Find(fooArray, element => element.StartsWith(v, StringComparison.Ordinal));
//
if (results != null)
{ MessageBox.Show(results); }
}
我创建了一种扩展方法以供重复使用。
public static bool InArray(this string str, string[] values)
{
if (Array.IndexOf(values, str) > -1)
return true;
return false;
}
怎么称呼:
string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
if(value.InArray(stringArray))
{
//do something
}
position
的OP是要求?
string[] strArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
if(Array.contains(strArray , value))
{
// Do something if the value is available in Array.
}
最简单,更短的方法如下。
string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
if(stringArray.Contains(value))
{
// Do something if the value is available in Array.
}
Contains
方法,您将没有此信息