Мне нужно получить индекс определенного символа в строке, но мне нужно знать, встречается ли он дважды в этой строке, и если это так, получить индекс второго вхождения. Я попробовал несколько вещей, но не смог найти решение. Кто-нибудь знает, как это можно сделать в .Net? vb.net, если можно.
То, что я пытаюсь, объясняется ниже:
У меня есть строка типа: 01298461705691703
Мне нужно получить индекс 17 в этой строке, но если в строке есть два 17, мне нужно знать индекс второго.
Итак, в основном вам нужен индекс последнего вхождения ?? Я имею в виду, если у вас есть 3 вхождения, вы все равно хотите второе? Или последний?
Возможный дубликат Как получить индекс второй запятой в строке
Вам нужно будет использовать IndexOf
два раза, используя его перегрузку во второй раз.
string myStr = "01298461705691703";
// Find the first occurence
int index1 = myStr.IndexOf("17");
// You might want to check if index1 isn't -1
// Find the second occurrence, starting from the previous one
int index2 = myStr.IndexOf("17", index1 + 1);
// We add +1 so that it doesn't give us the same index again
// Result will be 13
См.: https://docs.microsoft.com/en-us/dotnet/api/system.string.indexof
Начните свою строку с первого вхождения 17
, что-то вроде
string str = "01298461705691703";
int i = str.IndexOf("17", s.IndexOf("17")+1);
//^^^^^^^^^^^^^^^^^ This will start your string from first occurrence of 17
Синтаксис indexOf
куда,
уголь — это символ Юникода для поиска.
Int32 — начальный индекс строки
Если вы пытаетесь узнать последнее вхождение 17
в строку, вы можете использовать метод string.LastIndexOf()
.
string str = "01298461705691703";
int lastIndex = str.LastIndexOf("17");
ПОС : .Net рабочий пример
Решение String.LastIndexOf
Dim myStr as String = "01298461705691703"
Dim idx as Integer = myStr.LastIndexOf("17")
или в С#
string myStr = "01298461705691703";
int idx = myStr.LastIndexOf("17");
.IndexOf() даст вам позицию 1-го вхождения, затем вы можете снова использовать .IndexOf() для просмотра этой позиции для 2-го вхождения.