簡體   English   中英

regex.replace()中的C#多種模式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM