0

インデックスを見つけるために検索していた場所から続行するにはどうすればよいですか?

文字のインデックスを見つけるためにファイルを検索しています。次に、次の文字のインデックスを見つけるためにそこから続行する必要があります。例:文字列は「habcdefghij」です

       int index = message.IndexOf("c");
        Label2.Text = index.ToString();
        label1.Text = message.Substring(index);
        int indexend = message.IndexOf("h");
        int indexdiff = indexend - index;
       Label3.Text = message.Substring(index,indexdiff);

したがって、「cedef」を返す必要があります

ただし、2番目の検索はファイルの先頭から開始され、2番目のhではなく最初のhのインデックスが返されます:-(

4

3 に答える 3

4

String.IndexOf を使用すると、開始インデックスを指定できます。試す

//...
int indexend = message.IndexOf("h", index); 
//...
于 2010-03-10T15:05:22.123 に答える
0
int index = message.IndexOf("c");
label1.Text = message.Substring(index);

int indexend = message.IndexOf("h", index); //change

int indexdiff = indexend - index;
Label3.Text = message.Substring(index, indexdiff);
于 2010-03-10T15:08:52.227 に答える
0

このコードは、すべての一致を見つけて、それらを順番に表示します。

 // Find the full path of our document
        System.IO.FileInfo ExecutableFileInfo = new System.IO.FileInfo(System.Reflection.Assembly.GetEntryAssembly().Location);            
        string path = System.IO.Path.Combine(ExecutableFileInfo.DirectoryName, "MyTextFile.txt");

    // Read the content of the file
    string content = String.Empty;
    using (StreamReader reader = new StreamReader(path))
    {
        content = reader.ReadToEnd();
    }

    // Find the pattern "abc"
    int index = content.Length - 1;

    System.Collections.ArrayList coincidences = new System.Collections.ArrayList();

    while(content.Substring(0, index).Contains("abc"))
    {
        index = content.Substring(0, index).LastIndexOf("abc");
        if ((index >= 0) && (index < content.Length - 4))
        {
            coincidences.Add("Found coincidence in position " + index.ToString() + ": " + content.Substring(index + 3, 2));                    
        }
    }

    coincidences.Reverse();

    foreach (string message in coincidences)
    {
        Console.WriteLine(message);
    }

    Console.ReadLine();
于 2010-03-10T16:12:39.300 に答える