为什么.NET string.Empty.Split()返回一个包含空格字符的项?

时间:2016-11-23 10:16:40

标签: c# .net

我很好奇,为什么.NET string.Empty.Split()会返回一个包含空格字符的项?

4 个答案:

答案 0 :(得分:1)

声明中的一个小修正。 string.Empty.Split()不会返回带空格字符的项目,但会返回带有空字符串的项目。这是因为方法split()在没有参数时将白色空间视为分隔符。但是string.Empty中没有空格。所以它只是在输出数组的第一项中返回string.Empty。

答案 1 :(得分:0)

string.Empty.Split()返回一个字符串数组,其第一个位置的值为string.Empty。你会期待什么?

附加信息:第一个匹配项之前的所有内容都作为第一个元素返回。如果没有匹配,则在第一个位置返回字符串本身。

答案 2 :(得分:0)

如果您没有为Split方法提供任何分隔符,则uses whitespaces by default

private unsafe int MakeSeparatorList(char[] separator, ref int[] sepList) {
   ...
   if (separator == null || separator.Length ==0) {
      ...
      // If they passed null or an empty string, look for whitespace.

因此,当您调用string.Empty.Split()时,您试图通过空白字符拆分一个emtpy字符串。没有,所以该方法返回整个字符串作为唯一的结果。与调用"Hello!".Split完全一样,将返回string[] { "Hello!" }

答案 3 :(得分:0)

它没有see

using System;

public class Program
{
    public static void Main()
    {
        Console.WriteLine("ehh \"" + string.Empty.Split()[0] + "\"");
    }
}

返回:

ehh ""