字符串数组中的部分字符串

时间:2013-04-26 20:00:12

标签: c# c#-2.0

我有一个像{"ABC_DEF_GHIJ", "XYZ_UVW_RST", ...}这样的字符串数组,想要搜索我的数组是否包含部分匹配"ABC_DEF"的字符串。它应该返回索引(0)或字符串本身(“ABC_DEF_GHIJ”)。 我试过了:

int index = Array.IndexOf(saGroups, "ABC_DEF");

但它返回-1。

4 个答案:

答案 0 :(得分:1)

试试这个:

string[] strArray = { "ABC_DEF_GHIJ", "XYZ_UVW_RST" };
string SearchThisString = "ABC_DEF";
int strNumber;
int i = 0;
for (strNumber = 0; strNumber < strArray.Length; strNumber++)
{
    i = strArray[strNumber].IndexOf(SearchThisString);
    if (i >= 0)
      break;
}
Console.WriteLine("String number: {0}",strNumber);

答案 1 :(得分:1)

您可以使用扩展方法和Lambda表达式来实现此目的。

如果你需要包含数组元素中子字符串的第一个元素的索引,你可以这样做......

int index = Array.FindIndex(arrayStrings, s => s.StartsWith(lineVar, StringComparison.OrdinalIgnoreCase)) // Use 'Ordinal' if you want to use the Case Checking.

如果您需要包含子字符串的元素值,只需使用您刚刚获得的索引的数组,就像这样......

string fullString = arrayStrings[index];
  

注意:上面的代码会找到匹配的第一个匹配项。同样的,你   如果你想要数组中的最后一个元素,可以使用Array.FindLastIndex()方法   包含子字符串。

您需要将数组转换为List<string>,然后使用ForEach扩展方法和Lambda表达式来获取包含子字符串的每个元素。

答案 2 :(得分:0)

只需循环遍历字符串数组,并使用IndexOf方法检查每个元素(如果它包含您要搜索的字符串)。如果IndexOf返回除-1以外的值,则在当前元素中找到该字符串,并且您可以返回其索引。如果我们找不到要在数组的任何元素中搜索的字符串,则返回-1。

static int SearchPartial(string[] strings, string searchFor) {
    for(int i=0; i<strings.Length; i++) {
        if(strings[i].IndexOf(searchFor) != -1)
            return i;
    }
    return -1;
}

参见https://ideone.com/vwOERDfor演示

答案 3 :(得分:0)

您也可以使用包含:

        string [] arr = {"ABC_DEF_GHIJ", "XYZ_UVW_RST"};
        for (int i = 0; i < arr.Length; i++)
            if (arr[i].Contains("ABC_DEF"))
                return i; // or return arr[i]