2015-09-29 93 views
4

我分裂串在我的代碼是這樣的:拆分文本按標籤

var lines = myString == null 
      ? new string[] { } 
      : myString.Split(new[] { "\n", "<br />" }, StringSplitOptions.RemoveEmptyEntries); 

麻煩的是這個,有時文字是這樣的:

sdjkgjkdgjk<br />asdfsdg 

在這種情況下我代碼有效。然而,其他時候,文字是這樣的:

sdjkgjkdgjk<br style="someAttribute: someProperty;"/>asdfsdg 

在這種情況下,我沒有得到我想要的結果。如何通過整個br標籤分割這個字符串以及它的所有屬性?

+4

不要使用字符串方法或正則表達式解析HTML,請使用[HtmlAgilityPack](https://htmlagilitypack.codeplex.com/)這樣的可用的html解析器。你想如何拆分一個表格或者用樣式表打包(f.e。word-wrap:break-word)? –

+0

它總是有效的HTML?如果是這樣,我同意@TimSchmelter – Spaceman

回答

1

使用Regex.Split()。下面是一個例子: -

using System; 
using System.Text.RegularExpressions; 

public class Example 
{ 
    public static void Main() 
    { 
     string input = "sdjkgjkdgjk<br />asdfsdg"; 
     string pattern = "<br.*\\/>";   // Split on <br/> 

     DisplayByRegex(input, pattern); 
     input = "sdjkgjkdgjk<br style=\"someAttribute: someProperty;\"/>asdfsdg"; 
     DisplayByRegex(input, pattern); 
     Console.Read(); 
    } 

    private static void DisplayByRegex(string input, string pattern) 
    { 
     string[] substrings = Regex.Split(input, pattern); 
     foreach (string match in substrings) 
     { 
      Console.WriteLine("'{0}'", match); 
     } 
    } 
} 
0

我希望下面的代碼會幫助你。

var items = Regex.Split("sdjkgjkdgjk<br style='someAttribute: someProperty;'/>asdfsdg", @"<.*?>"); 
1

如果你只需要通過br標籤和換行符拆分,正則表達式是一個很好的選擇:

var lines = myString == null ? 
    new string[] { } : 
    Regex.Split(myString, "(<br.+>)|(\r\n?|\n)"); 

但是,如果你的要求變得越來越複雜,我建議使用HTML解析器。

1

你可以試試這個:

var parts = Regex.Split(value, @"(<b>[\s\S]+?<\/b>)").Where(l => l != string.Empty).ToArray(); 
0

你建議立即進行刪除使用正則表達式。 在這裏您可以找到一個good tutorial爲您的目的。