Ответ 1
Вы должны использовать такой код.
int index = s.IndexOf(',', s.IndexOf(',') + 1);
Возможно, вам нужно будет убедиться, что вы не выходите за пределы строки. Я оставлю эту часть до вас.
У меня есть строка в массиве, содержащая две запятые, а также вкладки и пробелы. Я пытаюсь вырезать два слова в этой строке, оба они перед запятыми, мне действительно не нравятся вкладки и пробелы.
Моя строка выглядит примерно так:
String s = "Address1 Chicago, IL Address2 Detroit, MI"
Я получаю индекс первой запятой
int x = s.IndexOf(',');
И оттуда я вырезал строку перед индексом первой запятой.
firstCity = s.Substring(x-10, x).Trim() //trim white spaces before the letter C;
Итак, как мне получить индекс второй запятой, чтобы я мог получить вторую строку?
Я очень ценю вашу помощь!
Вы должны использовать такой код.
int index = s.IndexOf(',', s.IndexOf(',') + 1);
Возможно, вам нужно будет убедиться, что вы не выходите за пределы строки. Я оставлю эту часть до вас.
Я просто написал этот метод Extension, поэтому вы можете получить n-й индекс любой подстроки в строке
public static class extensions
{
public static int IndexOfNth(this string str, string value, int nth = 1)
{
if (nth <= 0)
throw new ArgumentException("Can not find the zeroth index of substring in string. Must start with 1");
int offset = str.IndexOf(value);
for (int i = 1; i < nth; i++)
{
if (offset == -1) return -1;
offset = str.IndexOf(value, offset + 1);
}
return offset;
}
}
Примечание. В этой реализации я использую 1 = сначала, а не индекс, основанный на 0.