【问题标题】:String.Split() with default(string[]) as delimiter, how does it work?String.Split() 与 default(string[]) 作为分隔符,它是如何工作的?
【发布时间】:2016-11-09 11:53:51
【问题描述】:

在一些 C# 代码中,我看到 default(string[])null,但行为看起来像是基于空格进行拆分:

string[] x = "1 2   3".Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);
string[] y = "1,2,  3".Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);

这里,x 变为 string[3] = {"1","2","3"}y 变为 string[2] = {"1,2,","3"}

我的输入字符串可以使用空格或逗号分隔,即“1 2 3”或“1,2, 3”。但我希望输出为数字数组字符串,即 {"1","2","3"}

我怎样才能做到这一点?

【问题讨论】:

标签: c#


【解决方案1】:

使用default(string[]) 作为参数既不是特别有用也不可读,因为它可以(并且将由编译器)简化为仅null,这样更具可读性。

那你就去read the docs:

如果 separator 参数为 null 或不包含任何字符,则假定空白字符为分隔符。空白字符由 Unicode 标准定义,如果将它们传递给 Char.IsWhiteSpace 方法,则返回 true。

如果您想拆分多个分隔符,请尝试搜索:splitting a string based on multiple char delimiters

【讨论】:

  • @sahil:没有人说过现有代码必须有意义或有用。现有代码可能是废话。
  • 同意。说得通。我不知道这次转换,所以想确认一下。
【解决方案2】:

使用 char 数组替代 Split 的另一个覆盖

Split(new []{',',' '}, StringSplitOptions.RemoveEmptyEntries);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-14
    • 2013-08-19
    • 1970-01-01
    • 2018-03-06
    • 2015-02-27
    • 2018-03-20
    • 2012-12-17
    • 1970-01-01
    相关资源
    最近更新 更多