我有这段代码:
while(!sr1.EndOfStream)
{
radek1 = sr1.ReadLine();
Console.Write(radek1);
Console.WriteLine();
string[] split1 = radek1.Split(new char[] { ' ', '???' });
}
我从file.txt
读取一个字符串数组,我需要用空格和进入分割,所以我想交换这些?代表输入
答案 0 :(得分:5)
通过输入,您可能意味着New Line
。
在大多数情况下,这将是您正在寻找的:
string newLine = Environment.NewLine; //Updated to Sergey Volegov's suggested
在大多数情况下,Environment.NewLine
等于"\r\n"
,但有时只有\n
,因此使用Environment.NewLine
更明智。
\r
是回车
\n
是一个新行。
将其视为打字机。你需要回到行的开头(\r
),然后回到一行(\n
)
由于Environment.NewLine
是一个字符串,您需要Split
上的String
,而不是Char
s:
string[] split1 = radek1.Split(new string[] { " ", Environment.NewLine });
答案 1 :(得分:2)
使用此:
Environment.NewLine.ToCharArray();
正如@Guffa还说你也可以:
string[] split1 = radek1.Split(new string[] { " ", Environment.NewLine }, StringSplitOptions.None));
第二个基于空格和新线分割
但是,第一个分别按\r
和\n
分割。所以对于正确的行为,您要使用第二种方法。
答案 2 :(得分:2)
这取决于文件的来源以及文件的创建方式。
如果它是在同一系统上创建的,它很可能会使用该特定系统的原生换行组合,并且您可以使用Environment.NewLine
常量:
string[] split1 = radek1.Split(new string[] { " ", Environment.NewLine }, StringSplitOptions.None);
请注意,Environment.NewLine
是一个字符串,可以包含多个字符,因此您需要拆分字符串,并且调用需要StringSplitOptions
参数,因为没有它就没有重载。
如果文件来自不同的系统(或者是使用不同系统的典型换行创建的),则需要指定该特定字符串。例如,Windows系统中使用的两个字符串:
string[] split1 = radek1.Split(new string[] { " ", "\r\n" }, StringSplitOptions.None);
如果您需要处理来自不同系统的文件,您还可以包含最常见的换行组合:
string[] split1 = radek1.Split(new string[] { " ", "\r\n", "\n" }, StringSplitOptions.None);