簡體   English   中英

字符串數組中的部分字符串

[英]Partial String in array of strings

我有一個字符串數組,如{"ABC_DEF_GHIJ", "XYZ_UVW_RST", ...}並想搜索我的數組是否包含部分匹配"ABC_DEF"的字符串。 它應該返回索引(0)或字符串本身(“ABC_DEF_GHIJ”)。 我試過了:

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

但它返回-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);

您可以使用擴展方法和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表達式來獲取包含子字符串的每個元素。

只需循環遍歷字符串數組,並使用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/vwOERD

您還可以使用包含:

        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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM