C#string.split差异

时间:2017-07-14 12:55:07

标签: c#

我可能错过了一些非常基本的东西,但这让我很难过。

使用String.Split()时,我得到的结果不同

.Split(' ') 

.Split(new char[' '])

鉴于此代码:

using (System.IO.StreamWriter sw = new StreamWriter(@"C:\consoleapp1.log", true))
{
    string anystring = "pagelength=60 pagewidth=170 cpi=16 lpi=8 landscape=1 lm=2";
    sw.WriteLine(".Split(' ')");
    string[] anystrings1 = anystring.Split(' ');
    for (int i = 0; i < anystrings1.Length; i++)
    {
        sw.WriteLine($@"{i,2}: {anystrings1[i]}");
    }
    sw.WriteLine(".Split(new char[' '])");
    string[] anystrings2 = anystring.Split(new char[' ']);
    for (int i = 0; i < anystrings2.Length; i++)
    {
        sw.WriteLine($@"{i,2}: {anystrings2[i]}");
    }

}

为什么我会得到不同的结果:

.Split(' ')
 0: pagelength=60
 1: pagewidth=170
 2: cpi=16
 3: lpi=8
 4: landscape=1
 5: lm=2
.Split(new char[' '])
 0: pagelength=60 pagewidth=170 cpi=16 lpi=8 landscape=1 lm=2

1 个答案:

答案 0 :(得分:42)

new char[' ']

不符合你的想法。

空格为ASCII character 32(C#允许在charint之间进行隐式转换。因此,该代码会创建一个大小为32的char 数组