Получить индекс 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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