Получить индекс n-го вхождения символа в строкеC#

Место общения программистов C#
Anonymous
Получить индекс n-го вхождения символа в строке

Сообщение Anonymous »

Я пытаюсь создать функцию, которая возвращает индекс N-го вхождения данного символа в строку.

Вот моя попытка:

Код: Выделить всё

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;
}
Это должно найти первое вхождение, отрезать переднюю часть строки, найти первое вхождение в новой подстроке и так далее, пока не будет получен индекс n-го вхождения. Однако я не учел, как индекс последней подстроки будет смещен от исходного фактического индекса в исходной строке. Как мне заставить это работать?

Также в качестве побочного вопроса: если я хочу, чтобы символ был символом табуляции, мне передать эту функцию '\t' или что?

Подробнее здесь: https://stackoverflow.com/questions/113 ... n-a-string

Вернуться в «C#»