Ich versuche, eine Funktion zu erstellen, die den Index des N-ten Vorkommens eines bestimmten Zeichens in einer Zeichenfolge zurückgibt.
Hier ist mein Versuch:
Code: Select all
private int IndexOfNth(string str, char c, int n)
{
int index = str.IndexOf(c) + 1;
if (index >= 0)
{
string temp = str.Substring(index, str.Length - index);
for (int j = 1; j < n; j++)
{
index = temp.IndexOf(c) + 1;
if (index < 0)
{
return -1;
}
temp = temp.Substring(index, temp.Length - index);
}
index = index + (str.Length);
}
return index;
}
Dies sollte das erste Vorkommen finden, den vorderen Teil der Zeichenfolge abschneiden, das erste Vorkommen aus der neuen Teilzeichenfolge finden und so weiter und so weiter, bis es den Index des n-ten Vorkommens erhält. Ich habe jedoch nicht berücksichtigt, wie der Index des letzten Teilstrings vom ursprünglichen tatsächlichen Index im Originalstring abgesetzt werden soll. Wie mache ich das möglich?
Außerdem als Nebenfrage: Wenn ich möchte, dass das Zeichen das Tabulatorzeichen ist, übergebe ich dann diese Funktion „\t“ oder was?