[英]C# multiple patterns in regex.replace()
如何將多個模式傳遞給regex.replace()模式參數?
在PHP中,您只需放棄包含它們的數組。 C#中是否有某種相同的選項?
我正在遍歷一些用戶名,其中一些用戶名被html標記包圍。 html標記並不完全相同。 但是我知道他們是誰。
因此,如果我可以在regex.replace()模式參數中傳遞多個模式來尋找,那就太好了。 或者,我必須為每個html標簽制作一個單獨的模式,然后運行regex.replace()函數。
希望我對自己要完成的工作很清楚!
提前致謝!
[編輯] @艾倫·摩爾,
我想做的是,從字符串中刪除所有html標簽的底線。
[/編輯]
// 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), "");
使用正則表達式分隔符|
,例如:
</?html>|</?head>|</?div>
因此,您有一個字符串列表,每個字符串完全由一個可選地包含在HTML標記中的用戶名組成? 它們是哪個標簽並不重要; 只需刪除任何看起來像標簽的內容即可:
name = Regex.Replace(name, @"</?\w+[^<>]*>", String.Empty);
如果性能很重要,並且用戶名中沒有'<'或'>'的風險,則可以這樣做:
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.