Как удалить двойной тег HTML <strong>из строки в C # - PullRequest
2 голосов
/ 08 ноября 2011

Я хочу выполнить поиск на своем сайте ASP.NET MVC 3, поэтому для поиска я должен найти совпавшие шаблоны и в этих словах заменить совмещенную часть на ту же часть, выделенную жирным шрифтом (для этого тега html <strong>) .

Итак, у меня есть это в моем контроллере

        string[] words=content.Split(' ');
        foreach (Thread thread in context.Threads)
        {
            foreach (string word in words)
            {
                if (thread.Title.ToLower().Contains(word.ToLower()))
                {
                    thread.Title=Regex.Replace(thread.Title,word,String.Format("<strong>{0}</strong>","$0"),RegexOptions.IgnoreCase);
                }
            }

         }

Так что, если я буду искать new thread a, он найдет нить, подобную этой New thrEAd.

Но в html моя строка выглядит так

<strong>New</strong> <strong>thrE<strong>A</strong>d</strong>

Так что я хочу удалить сильный тег из a, потому что он делает двойной жирный шрифт ... Как я могу это сделать?

И если у вас есть интересные способы сделать мой поиск, я буду рад услышать ваши предложения.

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Вы можете очистить свои поисковые слова, проверив, что ни одно из них не содержит ни одного из других:

var cleanWords = words.Where(w => !words.Any(w2 => w2.Contains(w));
0 голосов
/ 30 ноября 2011

Попробуйте это:

IEnumerable<string> enumerableWords = content.Split(' ').Distinct();
string[] words = enumerableWords.ToArray();
foreach (Thread thread in context.Threads) {
    string result = thread.Title;
    foreach (string word in words) {
        result = Regex.Replace(result, String.Format(@"\b{0}\b", word), String.Format(@"<strong>{0}</strong>", word), RegexOptions.IgnoreCase);
    }
    thread.Title = result;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...