2013-05-12 48 views
6

客户端升级了他们的系统,并且他们开始报告输出中的错误。显然,之前分割出的一个字符串导致了以下结果。.NET Framework升级后RegEx.Split中的行为已更改

"a-b-c" -> {"a", "b", "c"} 

但是,他们得到了这个。

"a-b-c" -> {"a", "-", "b", "-", "c"} 

我检查了智能感知,但据我所知,有用于打开分离器的开/关列入别无选择。如何轻松解决这个问题?

我的脑海里最好的建议是使用正则表达式分割,然后使用正则表达式的匹配条件使用链接。似乎多余,虽然...

当前版本是4.5。之前,他们有东西ooold,像2.0什么的。

+0

你可以显示代码吗? – 2013-05-12 16:18:30

+0

Regex.Split(“a-b-c”,“ - ”); – 2013-05-12 16:21:32

+0

很奇怪。对于'Regex.Split(“a-b-c”,“( - )”);'来说,这个结果是可以预期的,'但不是你发布的内容。 – 2013-05-12 16:24:10

回答

3

.NET 4.5的行为是正确的。

捕获组的内容被添加到拆分结果中。因此,Regex.Split("a-b-c", "(-)");会将破折号添加到数组中。

改为使用Regex.Split("a-b-c", "-");

+0

哦,这是正确的,行为,好吧。这与以前不同。我刚刚找到[此链接](http://msdn.microsoft.com/en-us/library/8yttk7sy.aspx)(当他们讨论日期时,请参阅中间部分)。显然,我的客户之前运行过** ooooooooold **版本的.NET。 – 2013-05-12 16:40:46