[C#] Regex.Replace

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Реакции
3 140
Баллы
113
Есть стандартный экшн замены по Regex, который отрабатывает корректно

Screenshot_2.png

И есть код, который не хочет давать нужный результат
C#:
Развернуть Свернуть Копировать
string str = "1. 2. 3. 4. 5.";
Regex reg = new Regex(@"(?<=\.) ?");
str = reg.Replace(str, Environment.NewLine, 1, 3);
return str;
Screenshot_3.png

Вопрос: это код отрабатывает неправильно (баг) или сам код не верный?
 
я думаю, тройка это не номер совпадения, а номер символа с которого начинается поиск
Да, действительно, так и есть.

Тогда как все-таки делать замену по номеру совпадения? В том числе и не по регулярке.
 
В общем, разобрался.

Замена по номеру совпадения:
C#:
Развернуть Свернуть Копировать
string str = "1. 2. 3. 4. 5.";
string input = @"(?<=\.) ?"; // что искать
string replacement = Environment.NewLine; // на что заменить
int i = 3; // номер совпадения

Regex reg = new Regex(input);
int index = reg.Matches(str)[i].Index;
str = reg.Replace(str, replacement, 1, index);
return str;
 
Последнее редактирование:

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)