按标记拆分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