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

  • Автор темы Автор темы aluminoter
  • Дата начала Дата начала

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Реакции
40
Баллы
28
Подскажите как мне найти один элемент в тексте и заменить только его один раз.
То есть в тексте много тегов </p> вот мне надо найти только один и заменить на другой, но заменить надо только один элемент а не все.
 
Подскажите как мне найти один элемент в тексте и заменить только его один раз.
То есть в тексте много тегов </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
Код:
Развернуть Свернуть Копировать
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."

Спасибо все работает.
 
Как делал бы я
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);
 
Последнее редактирование:
Как делал бы я
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);

И тебе спасибо что откликнулся.
 
Код:
Развернуть Свернуть Копировать
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";

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

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