2016-10-09 5 views
0

У меня есть текст в строке. Я хочу найти два конкретных слова в строке и обернуть эти слова тегом <b>.
я пытался что-то вроде этого, но он не работает:Оберните тег вокруг определенных слов в строке

for (int i = 0; i < bold.Split(' ').Count(); i++) 
{ 
    if (myString.Split(' ')[i].Contains("MyWord")) 
     myString.Split(' ')[i] = "<b" + myString.Split(' ')[i] + "</b"; 
} 

И ни делает это:

if (myString.Contains("MyWord")) 
    myString = myString.Replace("MyWord", "<b>MyWord</b>"); 
+0

В первом случае назначение выполняется по новому новому массиву, полученному с помощью split. вы должны сохранить это в начальной переменной, а затем выполнить назначение. Но это плохой aproach tbh. 2-й лучше, и он должен работать. Как вы его протестировали? – Cosu

+1

В чем проблема? Второй пример работает, можете ли вы показать нам конкретный пример строки, которую вы ищете? –

+2

Я не вижу ничего плохого во втором примере. какой результат вы получаете, и что именно вы ожидаете? Кстати, вам не нужно 'if', если вы используете' Replace', он заменит только если содержит и дублирует поиск. –

ответ

1

Используйте Regex заменить все экземпляры подстроки.

Regex.Replace(myString, @"MyWord", "<b>MyWord</b>");

2

Второй подход, когда перерывы MyWord является частью более длинного слова - clbuttic problem. Вы можете избежать этого с регулярным выражением:

myString = Regex.Replace(myString, @"\bMyWord\b", "<b>MyWord</b>"); 

\b маркеры убедитесь, что MyWord не должны быть частью более длинного слова.

+0

Что относительно 'MyWord.'' '' после слова, если это последнее слово предложения –

Смежные вопросы