2017-02-23 19 views
0

文字列を検索する要件が1つあり、同じ文字列が2番目に出現する(昇順で)必要があり、その検索文字列ファイル内で最後まで最後の文字列を検索して文字列の2番目の文字列を見つけよう

例文字列:私は(最大まで)の最後から文字列START BATCHを発生二再検索する必要があり、このセミコロン区切りの文字列から

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を文字列配列に変換します。

私はLastIndexofメソッドで文字列を取得できます。しかし、今回私は同じ文字列の2番目の出現を取得する必要があります。
ご協力いただき誠にありがとうございます。

答えて

2

あなたがstartIndex引数を取るLastIndexOf()バージョンを使用することができます

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) 
    { ... } 
} 

はそうあなたがそれを使用することができます


あなたは長さをチェックすることで、パフォーマンスを少し向上させることができますlike

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

私はこの論理を認識しています。一度私は文字列の2番目の出現を見つけると、文字列の最後にその検索された文字列から文字列を格納する必要があります。 –

+0

@VigneshRあなたの言葉を明確にしてください。文字列配列に文字列を格納することによって、正確に何を意味するのかを指定します。私はあなたがそれを ';'で分けることを意味しています。しかし、それは唯一の推測です、あなたはまったく異なる何かを意味するかもしれません。あなたの質問を編集し、文字列を分割するための例と_specific_基準を提供してください(分割は_if_という意味です)。 –

+0

@Vogt上記のコードは私のために働いています。あなたの提案に感謝します.. –

関連する問題