如何将多个模式传递给regex.replace()模式参数?
在PHP中,您只需放弃包含它们的数组。 C#中是否有某种相同的选项?
我正在遍历一些用户名,其中一些用户名被html标签包围。 html标签并不完全相同。但我确实知道他们是哪一个。
因此,如果我可以在regex.replace()模式参数中传递多个模式来查找,那就太好了。或者我必须为每个html标记创建一个单独的模式并运行regex.replace()函数。
希望我清楚我要完成的事情!
提前致谢!
[编辑] @Alan Moore,
底线,从字符串中删除所有html标签,正是我想要做的。
[/编辑]
答案 0 :(得分:7)
// 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), "");
答案 1 :(得分:5)
使用regexp divider |
,例如:
</?html>|</?head>|</?div>
答案 2 :(得分:2)
所以你有一个字符串列表,每个字符串都完全由一个用户名组成,可选择包含在HTML标签中?它们属于哪个标签无关紧要;只需删除看起来的任何内容,如标记:
name = Regex.Replace(name, @"</?\w+[^<>]*>", String.Empty);
答案 3 :(得分:1)
如果表现很重要并且没有'&lt;'的风险或'&gt;'在用户名中,这可以工作:
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;
}