Получение второго индекса конкретного символа в строке, когда их всего два

Мне нужно получить индекс определенного символа в строке, но мне нужно знать, встречается ли он дважды в этой строке, и если это так, получить индекс второго вхождения. Я попробовал несколько вещей, но не смог найти решение. Кто-нибудь знает, как это можно сделать в .Net? vb.net, если можно.

То, что я пытаюсь, объясняется ниже:

У меня есть строка типа: 01298461705691703

Мне нужно получить индекс 17 в этой строке, но если в строке есть два 17, мне нужно знать индекс второго.

.IndexOf() даст вам позицию 1-го вхождения, затем вы можете снова использовать .IndexOf() для просмотра этой позиции для 2-го вхождения.

Alex K. 10.04.2019 13:06

Итак, в основном вам нужен индекс последнего вхождения ?? Я имею в виду, если у вас есть 3 вхождения, вы все равно хотите второе? Или последний?

Mohamad Mousheimish 10.04.2019 13:13

Возможный дубликат Как получить индекс второй запятой в строке

MatSnow 10.04.2019 13:27
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
396
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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

строка.IndexOf(Char, Int32)

куда,

  • уголь — это символ Юникода для поиска.

  • 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");

Другие вопросы по теме