2017-02-23 61 views
0

我有一個要求來搜索字符串,並且需要從最後(升序)查找第二次出現的相同字符串,並且必須從該搜索字符串中讀取它以文件形式保存。通過從最後一個字符串進行搜索並找到第二個字符串出現

例字符串:

START BATCH;Cube check SUCCESS;Cube Check Status Time;2/22/2017 5:54:02AM; Entered try;Web check Passed;STOP BATCH;START BATCH;Cube check SUCCESS;Cube Check Status Time 

從這個分號隔開字符串我需要查詢的第二再從最後一個出現的串START BATCH(下到上),然後從該字符串我需要存儲整個子串入字符串數組。

早些時候,我能夠通過LastIndexof方法獲取字符串。但是這一次我需要得到相同字符串的第二次出現。
非常感謝您的幫助。

回答

2

可以使用LastIndexOf()版本,需要一個startIndex參數:

public int FindSecondLastIndex(string input, string search) 
{ 
    int lastIndex = input.LastIndexOf(search); 
    if (lastIndex <= 0) return -1; 
    return input.LastIndexOf(search, lastIndex - 1); 
} 

,並使用它:

string input = "START BATCH;Cube check SUCCESS;Cube Check Status Time;2/22/2017 5:54:02AM; Entered try;Web check Passed;STOP BATCH;START BATCH;Cube check SUCCESS;Cube Check Status Time" 
string search = "START BATCH"; 

Console.WriteLine(FindSecondLastIndex(input, search)); 

輸出:0

if (lastIndex < search.Length) return -1; 
return input.LastIndexOf(search, lastIndex - search.Length); 

,可能實現它的擴展string

public static class StringExtension 
{ 
    public static int SecondLastIndexOf(this string input, string search) 
    { ... } 
} 

,所以你可以用它


您可以通過檢查長度提高性能一點點像

var index = input.SecondLastIndexOf(search); 
+0

沃格特我知道這個邏輯。一旦我發現第二次發生的字符串,我需要將字符串數組中的字符串存儲到字符串結尾。 –

+0

@VigneshR請澄清你的措辭。通過「將字符串存儲在字符串數組中」來指定_exactly_的意思。我認爲你的意思是用';'來分解它。但這只是一個猜測,你可能意味着完全不同的東西。請編輯你的問題,並提供一個示例和_specific_條件分割字符串(_if_分裂是你的意思)。 –

+0

@Vogt上面的代碼已經爲我工作。非常感謝您的建議.. –

相關問題