C # несколько шаблонов в regex.replace () - PullRequest
1 голос
/ 31 июля 2010

Как передать несколько шаблонов в параметр шаблона regex.replace ()?

В PHP вы просто отказываетесь от содержащего их массива. Есть ли такая же опция в C #?

Я перебираю некоторые имена пользователей, и некоторые из этих имен пользователей заключены в HTML-теги. HTML-теги не все одинаковы. Но я знаю, кто они.

Так что, если я могу передать несколько шаблонов для поиска в параметре шаблона regex.replace (), было бы неплохо. Или мне придется создать для каждого тега html отдельный шаблон и запустить функцию regex.replace ().

Надеюсь, мне ясно, что я пытаюсь сделать!

Заранее спасибо!

[EDIT] @ Алан Мур,

Итог, удаляя все html-теги из строки, - вот что я пытаюсь сделать.

[/ EDIT]

Ответы [ 4 ]

7 голосов
/ 01 августа 2010
// I’m assuming you have a regex for each thing you want to replace
List<string> multiplePatterns = [...];

string result = Regex.Replace(input, string.Join("|", multiplePatterns), "");
5 голосов
/ 01 августа 2010

Используйте разделитель регулярного выражения |, например:

</?html>|</?head>|</?div>
2 голосов
/ 01 августа 2010

Итак, у вас есть список строк, каждая из которых полностью состоит из имени пользователя, необязательно заключенного в теги HTML? Не должно иметь значения, какие это тэги; просто удалите все, что выглядит как тег:

name = Regex.Replace(name, @"</?\w+[^<>]*>", String.Empty);
1 голос
/ 01 августа 2010

Если важна производительность и нет риска '<' или '>' в именах пользователей, это может работать:

string RemoveTags(string s)
        {
            int startIndex = s.IndexOf('<');
            int endIndex = s.IndexOf('>');
            return startIndex >= 0 && endIndex >= 0 ? RemoveTags(s.Remove(startIndex, endIndex - startIndex + 1)) : s;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...