2012-09-27 85 views
1

我有这样删除字符串C#的某些部分

< TR> < TD> 14.54.49 </TD> < TD> SKUTTELG </TD> < TD> 001772377777 </TD的字符串> < td> test </td> < td> SKUTTELG - mottatt。 VILT:Okse 2,5 AR +的Jak </TD> </TR>

我希望得到

SKUUTELG 001772377777测试SKUTTELG - mottatt。 VILT:Okse 2,5 AR +的Jak

需要删除

< TR> < TD>

我尝试一下这样的...

var testString = "MY STRING" 
var stringArray = testString.Split('<tr><td>'); 
stringArray.Remove("<tr><td>); 
var output = String.Join("<tr><td>", stringArray); 

但是这不起作用..

+1

' '​​''是不是有效的C#,你需要使用' “​​”' –

+1

你也想删除'14.54.49'? –

回答

5

如果我理解你的权利,你只需要剥去在这种情况下,HTML标签,一个简单的字符串替换分裂的顶部应该做的:

var testString = "your string"; 

var array = str.Split(new string[] { "<tr>", "<td>" }, 
         StringSplitOptions.RemoveEmptyEntries); 

return string.Join("", array.Skip(1)).Replace("</tr>", "").Replace("</td>", " "); 

基本步骤:

  • 分裂数组,请使用包含<tr><td>标记的字符串数组。
  • 然后使用LINQ跳过第一个元素并将元素连接在一起。
  • 根据要结束的间距,用空字符串或空格替换结束标记。
+0

这将不会像OP中的“想要获得”那样插入空格。 –

+0

@DourHighArch好点。修改代码以用空格替换标签,然后修剪尾部的前导和尾部空格。 –

+0

这将插入多个空格;也许只能用空格替换“”。 –

1

如何解析一个html与html parser

string html = @"<tr><td>14.54.49</td><td>SKUTTELG</td><td>001772377777</td><td>test </td><td>SKUTTELG - mottatt. Vilt: Okse 2,5 år + Jak</td></tr>"; 

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml(html); 

var tds = String.Join(" ", doc.DocumentNode 
           .SelectNodes("//td").Select(x => x.InnerText) 
           .Skip(1)); 

如果有一个以上的tr在表

var lines = String.Join("\n",doc.DocumentNode.SelectNodes("//tr") 
           .Select(node=>String.Join(" ", 
                node.Descendants("td").Skip(1) 
                 .Select(x=>x.InnerText))));