我試圖將包含HTML標記的HTML字符串中的>字符的所有實例轉換爲與其等效的HTML實體>。我用這個解決方案得到的最遠距離是使用正則表達式。轉換爲HTML字符串中的HTML實體
這是我到目前爲止有:
public static readonly Regex HtmlAngleBracketNotPartOfTag = new Regex("(?:<[^>]*(?:>|$))(>)", RegexOptions.Compiled | RegexOptions.Singleline);
我在被隔離單>字符不是一個HTML標記的一部分的主要問題。我不想轉換任何現有的標籤,因爲我需要保留HTML進行渲染。如果我不轉換>字符,我會得到格式不正確的HTML,這會在瀏覽器中導致呈現問題。
這是一個測試字符串的示例來解析:
"Ok, now I've got the correct setting.<br/><br/>On 12/22/2008 3:45 PM, [email protected] wrote:<br/><div class"quotedReply">> Ok, got it, hope the angle bracket quotes are there.<br/>><br/>> On 12/22/2008 3:45 PM, > [email protected] wrote:<br/>>> Please someone, reply to this.<br/>>><br/>><br/></div>"
在上述字符串中,沒有>字符是HTML標記的部分的應轉換爲>。所以,這樣的:
<div class"quotedReply">>
應成爲這樣:
<div class"quotedReply">>
另一個問題是,上面的表達式使用非捕獲基團,其是除了一個事實,即匹配是在第1組細。我不太清楚如何僅替換第一組,並保留比賽的其餘部分。看起來MatchEvaluator並沒有真正做到這一點,或者我現在無法想象它。
我懷疑我的正則表達式可以做一些喜歡'。
任何人有任何明智的想法?
有點有趣這裏...我想你的例子吃了。當你想逐字粘貼某些東西時,你應該在編輯器中檢查「代碼示例」按鈕。即使我不得不回去編輯我的答案,因爲我使用了&GT,它翻譯了它...... :) – LarryF 2008-12-23 22:37:50
哦,諷刺。 :) – 2008-12-23 23:05:34