如何按字符串分隔符拆分字符串?意外的String.Split(“ “.ToCharArray())行为

问题描述 投票:1回答:2

我有这样的输入字符串(从.NET调试器粘贴):

"g: 17.00 2D nap<br>\ng: 14.30 2D dub ; 17.15 3D nap<br>\ng: 14.30 3D dub ; 17.15 2D nap<br>\ng: 17.00 2D dub<br>\ng: 17.00 3D dub"

我试图通过"<br>"拆分它:

var items = mystring.Split("<br>".ToCharArray()); // 7 elements

我得到7个列表元素而不是5个。

它看起来像Split功能拆分“;”分隔器。

现在我找到了这样的解决方法:

var items = mystring.Replace("<br>", "|").Split("|".ToCharArray()); // 5 elements

但是发生了什么?

c# .net
2个回答
9
投票

您的问题在于使用ToCharArray()

String.Split()重载需要你正在使用的char[],它将使用每个单独的字符作为分隔符:因此,通过传入"<br>".ToCharArray(),它给出了<br>的组成字符,你将你的字符串分成任何<br>,你会同意这不是你想要的。

现在,没有选项拆分单个字符串的重载,但是很容易绕过这个:

var items = mystring.Split(new[] { "<br>" }, StringSplitOptions.None);

1
投票

尝试使用RegEx.Split

var items = RegEx.Split(mystring, "<br>"); 

这将分为<br>的完全匹配,而不是像其他答案中所说的那样单独分割。

© www.soinside.com 2019 - 2024. All rights reserved.