2015-12-23 2 views
-1

Мне нужно заменить текст между тегами <span> из HTML-документа. У меня есть следующий код:Заменить текст между тегами span в html с помощью C#

string pattern = "<span class=\"nameLastname\">(.*)</span>"; 
string nameLastnamePattern = "<span class=\"nameLastname\">"+name+ lastname+"</span>"; 

System.IO.StreamReader objReader; 
objReader = new StreamReader(System.IO.Directory.GetCurrentDirectory() + "\\intel\\main.html"); 
string content = objReader.ReadToEnd(); 
objReader.Close(); 

content = Regex.Replace(content,pattern, nameLastnamePattern); 

StreamWriter writer = new StreamWriter(System.IO.Directory.GetCurrentDirectory() + "\\intel\\main.html"); 
writer.Write(content); 
writer.Close(); 

Например, я хочу, чтобы заменить <span class="nameLastname">George</span> что-то вроде <span class="nameLastname">Dave</span>. Но мой код не работает.

+4

Regex и Html не играют хорошо вместе. Html Agility Pack - ваш друг, https://htmlagilitypack.codeplex.com/ – dbugger

+0

Я думаю, что ваш шаблон содержит больше специфических символов Regex, кроме ". Я всегда использую функцию поиска/замены Notepad ++ для быстрой проверки шаблонов регулярных выражений. Попробуйте" ([A-Za-z] *) " – shmow

+0

Вы также можете использовать онлайн-тестер. http://regexstorm.net/tester или http://regexhero.net/tester –

ответ

0

Working example on Rextester.

Выкройка: @"<span([^>]*)class=\""(\w+)\""([^>]*)>(.*)<\/span>"

Regex regex = new Regex(pattern, RegexOptions.Multiline); 
regex.Replace (inputData, "<span${1}class=\"${2}\"${3}>Replacement</span>") 

Первая группа захватывает содержание до того устанавливается атрибут class. Вторая группа фиксирует имя класса . Третья группа захватывает атрибуты после класс. Четвертая группа - это фактический узел диапазона содержание элемента. Это заменяется.

+0

В шаблоне, когда я хочу заменить span, который является классом = lastname. Что я должен написать? @ "] *) class = \" "lastname \" "([^>] *)> (. *) <\/span>"? –

+0

Я хочу изменить в Html документах пользователей, таких как имя, фамилия, мобильный, возраст. Например: возраст находится в Возраст. Мобильный телефон находится в 231231. em, как бы Pattern? –

+0

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