【发布时间】:2013-01-13 10:27:31
【问题描述】:
有什么正当理由可以解释为什么String.Split 不接受分隔符字符串和要拆分的文本的重载?
string[] Split(string delimiter)
然后可以像这样使用
string input = "This - is - an - example";
string[] splitted = input.Split(" - ");
// results in:
// { "This", "is", "an", "example" }
我真的知道,我可以很容易地创建一个扩展方法,但是没有添加这个必须有正当的理由。
请注意,我不是在寻找如何使用字符串分隔符拆分字符串的解决方案,而是在寻找解释,为什么这样的重载会导致问题。这是因为我认为它不会真正引起问题,而且我发现初学者很难理解为什么我们必须传递一个实际的 string[] 而不是简单的 string 作为分隔符。
【问题讨论】:
-
我想可以添加许多看似简单的方法,但这就是为什么您可以通过扩展方法添加自己的方法,正如您所指出的那样。
-
@HansPassant 我已经联系了Eric Lippert 关于这个,希望他能提供更多的见解。
-
@glosrob 虽然肯定有 1000 多个人们希望看到但没有提供的重载,但我认为
string.Split(string)似乎是完全不费吹灰之力的,而且我也想知道是否有特定的原因不包括它。使用扩展方法处理这个问题仍然会涉及将字符串放入数组中的额外开销。 -
@Default 有一个公共联系表on his blog
-
我不知道为什么 BCL 团队会做出这个决定。我个人觉得,Split 的每次重载都要求我在参数中创建垃圾,这很烦人。我的建议是你通过他们的博客询问 BCL 团队。这个问题需要读心来回答,因此很可能会被关闭。
标签: c# .net string split code-design