2010-07-31 64 views
1

如何將多個模式傳遞給regex.replace()模式參數?regex.replace()中的C#多個模式()

在PHP中,你只需放棄包含它們的數組。在C#中有某種相同的選項嗎?

我在循環瀏覽一些用戶名,其中一些用戶名被html標籤包圍。 html標籤不完全相同。但我知道他們是哪一個。

所以,如果我可以傳遞多個模式來查找regex.replace()模式參數,會很好。或者我必須爲每個html標籤創建一個單獨的模式並運行regex.replace()函數。

希望我明白我想要完成的事情!

在此先感謝!

[編輯] @Alan摩爾,

底線,刪除所有HTML標籤一個字符串的,是我想要做的事。

[/編輯]

+1

如果你告訴我們你試圖做* *你會得到更好的幫助,而不是*您是如何試圖做到這一點*。忘掉你從其他語言知道的噱頭,告訴我們你想要達到的結果。請修改您的問題並將信息放在那裏,而不是發表評論。 – 2010-07-31 23:20:45

回答

2

所以你有一個字符串的列表,每個字符串完全由一個用戶名可選地包含在HTML標籤中?它們應該無關緊要,只是刪除任何看起來像標籤:

name = Regex.Replace(name, @"</?\w+[^<>]*>", String.Empty); 
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), ""); 
5

使用正則表達式分隔|,如:

</?html>|</?head>|</?div> 
1

如果性能是重要的,有一個在用戶名沒有 '<' 或 '>' 的風險,這可以工作:

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; 
     }