2009-11-27 66 views
0

刪除選定的特殊字符我有C#列表,其中很多值這樣如何從列表

<b>Moon</b>

,我想刪除<b></b>

我想造成這樣Moon

我怎樣才能刪除此類型從列表中的字符。

+0

您的帖子似乎已被格式化代碼錯位,很難告訴你什麼開始與... – fyjham 2009-11-27 14:04:32

回答

5

您可以使用XDocument刪除XML標籤:

string StripXmlTags(string xml) 
{ 
    XDocument doc = XDocument.Parse(xml); 
    return doc.Root.Value; 
} 

例子:

[Test] 
public void Test() 
{ 
    string xml = "<root><b>nice </b><c>node</c><d><e> is here</e></d></root>"; 
    string result = StripXmlTags(xml); 

    Assert.AreEqual("nice node is here", result); 
} 
1

試試這個:

var moonHtml = "<b>Moon</b>"; 
var regex = new Regex("</?(.*)>", RegexOptions.IgnoreCase | RegexOptions.Multiline); 
var moon = regex.Replace(moonHtml, string.Empty); 
+0

12秒快,多麼可惜;) – Elephantik 2009-11-27 14:05:32

+1

爲什麼當斜槓將被包含在隨後的點中時指定「零或一個/」'/?'?爲什麼在沒有字母字符時指定忽略大小寫?最佳實踐?好吧。你的代碼很貪婪。如果有像'ABC 月亮更多的文字更月亮一個字符串'那麼你會剛剛結束了「ABC」。 – 2009-11-27 14:08:25

+1

不要使用正則表達式來解析HTML - http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – thecoop 2009-11-27 14:29:09

0

試試這個:

Regex.Replace("<b>Moon</b>", @"\<.+?\>", "") 
0
string noHtml = Regex.Replace(inputWithHtmlTags, "<[^>]+>", ""); 
0

該方案是一個正則表達式,將刪除所有標籤的一種非常原始的例證,它是足夠的靈活性,也刪除斜體和下劃線。它使用IgnoreCase選項來防止輸入中的<b><B>,並將執行多行搜索。運行它的輸出將是「月球上的人」。我用 。*?這意味着零個或多個趕上空的方括號的情況下,如<>

using System; 
using System.Text.RegularExpressions; 

namespace ConsoleApplication3 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var input = "<b>The</b> <i>Man</i> on the <U><B>Moon</B></U>"; 

      var regex = new Regex("<.*?>", RegexOptions.IgnoreCase | RegexOptions.Multiline); 

      var output = regex.Replace(input, string.Empty); 

      Console.WriteLine(output); 
      Console.ReadLine(); 
     } 
    } 

}