Regex.Replace единичная замена вхождения

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Подскажите как мне найти один элемент в тексте и заменить только его один раз.
То есть в тексте много тегов </p> вот мне надо найти только один и заменить на другой, но заменить надо только один элемент а не все.
 

surrealmix

Client
Регистрация
07.03.2013
Сообщения
715
Благодарностей
409
Баллы
63
Подскажите как мне найти один элемент в тексте и заменить только его один раз.
То есть в тексте много тегов </p> вот мне надо найти только один и заменить на другой, но заменить надо только один элемент а не все.

Код:
var text = "Hello world. Big world.";
var pattern = "world?";
var value = "Charly";

var match = System.Text.RegularExpressions.Regex.Matches(text, pattern)[0]; //[0] - Это порядковый номер результата поиска регуляркой
text = text.Remove(match.Index, match.Length).Insert(match.Index, value);
return text;

//result = "Hello Charly. Big world."
 
  • Спасибо
Реакции: aluminoter

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Код:
var text = "Hello world. Big world.";
var pattern = "world?";
var value = "Charly";

var match = System.Text.RegularExpressions.Regex.Matches(text, pattern)[0]; //[0] - Это порядковый номер результата поиска регуляркой
text = text.Remove(match.Index, match.Length).Insert(match.Index, value);
return text;

//result = "Hello Charly. Big world."
Спасибо все работает.
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
792
Баллы
113
Как делал бы я
C#:
var text = "1123123123"; //строка в которой будет вестись поиск
var regex = new Regex("\\d{2}"); // экземпляр регулярного выражения
var replacement = "yep"; //замена
var startat = 2; //порядковый номер найденого регулярного выражения, начинается с 1
var rcount = 1; //количество замен
if(!(startat > 0 && rcount > 0)) //проверяем
    throw new Exception("условия поиска заданы неверно");
var matches = regex.Matches(text); //сначала ищем
if(matches.Count < startat) //проверяем
    throw new Exception("найденое количество совпадений меньше указаного индекса");
return regex.Replace(text, replacement, rcount, matches[startat].Index);
 
Последнее редактирование:

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Как делал бы я
C#:
var text = "1123123123"; //строка в которой будет вестись поиск
var regex = new Regex("\\d{2}"); // экземпляр регулярного выражения
var replacement = "yep"; //замена
var startat = 2; //порядковый номер найденого регулярного выражения, начинается с 1
var rcount = 1; //количество замен
var matches = regex.Matches(text); //сначала ищем
if(!(startat > 0 && rcount > 0)) //проверяем
    throw new Exception("условия поиска заданы неверно");
if(matches.Count < startat) //проверяем
    throw new Exception("найденое количество совпадений меньше указаного индекса");
return regex.Replace(text, replacement, rcount, matches[startat].Index);
И тебе спасибо что откликнулся.
 

gs517

Client
Регистрация
18.05.2013
Сообщения
138
Благодарностей
15
Баллы
18
Код:
var text = "Hello world. Big world.";
var pattern = "world?";
var value = "Charly";

var match = System.Text.RegularExpressions.Regex.Matches(text, pattern)[0]; //[0] - Это порядковый номер результата поиска регуляркой
text = text.Remove(match.Index, match.Length).Insert(match.Index, value);
return text;

//result = "Hello Charly. Big world."
как блок:
var text = "Hello world. Big world.";
var pattern = "world?";
var value = "Charly";

обозначить переменными из проекта?
 

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