按标记拆分C#中的文本

按标记拆分C#中的文本,c#,html,C#,Html,我在代码中拆分字符串,如下所示: var lines = myString == null ? new string[] { } : myString.Split(new[] { "\n", "<br />" }, StringSplitOptions.RemoveEmptyEntries); sdjkgjkdgjk<br />asdfsdg sdjkgjkdgjk<br style="someAttribut

我在代码中拆分字符串,如下所示:

var lines = myString == null 
            ? new string[] { } 
            : myString.Split(new[] { "\n", "<br />" }, StringSplitOptions.RemoveEmptyEntries);
sdjkgjkdgjk<br />asdfsdg
sdjkgjkdgjk<br style="someAttribute: someProperty;"/>asdfsdg
var lines=myString==null
? 新字符串[]{}
:myString.Split(新[]{“\n”,“
”},StringSplitOptions.RemoveEmptyEntries);
问题是,有时文本看起来像这样:

var lines = myString == null 
            ? new string[] { } 
            : myString.Split(new[] { "\n", "<br />" }, StringSplitOptions.RemoveEmptyEntries);
sdjkgjkdgjk<br />asdfsdg
sdjkgjkdgjk<br style="someAttribute: someProperty;"/>asdfsdg
sdjkjkdgjk
asdfsdg
在这种情况下,我的代码是有效的。但是,在其他情况下,文本如下所示:

var lines = myString == null 
            ? new string[] { } 
            : myString.Split(new[] { "\n", "<br />" }, StringSplitOptions.RemoveEmptyEntries);
sdjkgjkdgjk<br />asdfsdg
sdjkgjkdgjk<br style="someAttribute: someProperty;"/>asdfsdg
sdjkjkdgjk
asdfsdg
在这种情况下,我没有得到我想要的结果。如何按整个br标记及其所有属性拆分此字符串?

使用
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);
        }
    }
}
使用系统;
使用System.Text.RegularExpressions;
公开课范例
{
公共静态void Main()
{
字符串输入=“sdjkjkdgjk
asdfsdg”; 字符串模式=”“;//在上拆分
DisplayByRegex(输入、模式); input=“sdjkjkdgjk
asdfsdg”; DisplayByRegex(输入、模式); Console.Read(); } 私有静态void DisplayByRegex(字符串输入,字符串模式) { string[]substring=Regex.Split(输入,模式); foreach(子字符串中的字符串匹配) { WriteLine(“{0}”,匹配); } } }
我希望下面的代码能帮助您

    var items = Regex.Split("sdjkgjkdgjk<br style='someAttribute: someProperty;'/>asdfsdg", @"<.*?>");
var items=Regex.Split(“sdjkjkdgjk
asdfsdg',@');
如果只需要按
br
标记和换行符拆分,正则表达式是一个不错的选择:

var lines = myString == null ?
    new string[] { } :
    Regex.Split(myString, "(<br.+>)|(\r\n?|\n)");
var lines=myString==null?
新字符串[]{}:
Regex.Split(myString,“()|”(\r\n?|\n)”;
但如果您的需求变得更复杂,我建议您使用HTML解析器。

您可以尝试以下方法:

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

您应该使用正则表达式。
在这里,您可以找到一个专门的语法分析器。

不要使用字符串方法或正则表达式解析HTML,请使用可用的HTML语法分析器,如。您希望如何拆分表格或通过样式表进行包装(例如,word wrap:break word)?它是否始终有效?如果是这样,我同意@TimSchmelter