Простое регулярное выражение заменить, чтобы сохранить исходную строку - PullRequest
7 голосов
/ 11 сентября 2011

У меня есть это:

Title = Regex.Replace(Title, s, "<span style=\"background:yellow\">" + s + "</span>", RegexOptions.IgnoreCase);

Где s это слово типа facebook.Если заголовок:

How to make a Facebook game

, я хотел бы заменить его на:

How to make a <span style="background:yellow">Facebook</span> game

Даже если поисковым словом является «facebook» (с большой буквы).Как сохранить исходную заглавную букву слова?

Другой пример, поисковый термин FACEBOOK, строка Hello FaCeBoOk превращена в Hello <span style="background:yellow">FaCeBoOk</span>

Ответы [ 3 ]

8 голосов
/ 11 сентября 2011

Для этого можно использовать замену $& :

Regex.Replace(Title, s, "<span style=\"background:yellow\">$&</span>", RegexOptions.IgnoreCase)
1 голос
/ 11 сентября 2011

Вы можете просто включить группу захвата, которая соответствует слову «facebook», и включить эту группу захвата как часть строки замены. Это в конечном итоге включит его в конечный результат в точности так, как он появился во входных данных.

var title = "How to make a Facebook game";
title = Regex.Replace(title,
                      "(facebook)",
                      "<span style=\"background:yellow\">$1</span>",
                      RegexOptions.IgnoreCase);

См. В действии .

1 голос
/ 11 сентября 2011
var input = "How to make a Facebook game, do you like facebook?";
var searchFor = "facebook";
var result = Regex.Replace(
    input, 
    searchFor, 
    "<span style=\"background:yellow\">$+</span>", 
    RegexOptions.IgnoreCase);

Единственная важная вещь - это $+.Содержит последний полученный текст.Это будет работать даже для "Как сделать игру на Facebook, тебе нравится Facebook?"Первый Facebook будет оставлен в верхнем регистре, второй - в нижнем.

Я добавлю, что если вы хотите искать только целые слова, вы можете сделать:

searchFor = @"\b" + searchFor + @"\b";

Это будет искать только строки, находящиеся на границе слова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...