C# 拆分包含各种空格的字符串
我有如下的txt文件,我想把它们分成两个数组C# 拆分包含各种空格的字符串,c#,arrays,split,C#,Arrays,Split,我有如下的txt文件,我想把它们分成两个数组 node Strain Axis Strain F P/S Sum Cur Moment 0 0.00000 0.00 0.0000 0 0 0 0 0.00 1 0.00041 -83.19 0.0002 2328 352 0 0 -0.80 2 0.00045 -56.91 0.0002 2329 352
node Strain Axis Strain F P/S Sum Cur Moment
0 0.00000 0.00 0.0000 0 0 0 0 0.00
1 0.00041 -83.19 0.0002 2328 352 0 0 -0.80
2 0.00045 -56.91 0.0002 2329 352 0 0 1.45
3 0.00050 -42.09 0.0002 2327 353 0 0 -0.30
我的目标是为每一列创建一系列数组。即
节点[]={0,1,2,3),轴[]={0.00,-83.19,-56.91,-42.09}
我知道如何读取txt文件并将字符串转换为双数组。但问题是这些值不是由制表符分隔的,而是由不同的空格数分隔的。我通过谷歌搜索找到了一种方法。但是,我找不到任何方法。一些人讨论了一种使用常量空格的方法。如果你知道如何分隔,或者这个问题有现成的Q&a请告诉我,我们将不胜感激。谢谢,使用此选项将连续分隔符视为一个:
string[] parts = source.Split(' ',StringSplitOptions.RemoveEmptyEntries);
然后从那里解析:
double[] values = parts.Select(s => double.Parse(s)).ToArray();
StringSplitOptions.RemoveEmptyEntires
应该可以实现以下功能:
var items = source.Split(new [] { " " }, StringSplitOptions.RemoveEmptyEntries);
返回值不包括包含空字符串的数组元素
另一种方法是使用正则表达式,尽管我建议您使用
removemptyEntries
坚持使用其他答案,但在这种情况下,这是一种过度使用:
string[] elements = Regex.Split(s, @"\s+");
您不能按位置阅读它们吗?可能应该使用
环境。换行符而不是弄乱CRLF。@McAdan不,文本可以在一个环境中准备,在另一个环境中解析。它在编写时很好,而不是在编写时reading@McAden*禁止使用单个字符(\n
)。我知道,我只是指出您的代码使用的是\n\r
,我认为这并不常见。最终这取决于OP从何处提取数据。您的代码是最正确的,否则我+1。@McAden我不认为您真的完全理解此代码。它创建了一个数组(“\n\r.tocharray()
),顺序不重要。与“\r\n”相同。ToCharray()
谢谢您的帮助,
var doubles = text.Split("\n\r".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
.Skip(1)
.Select(line => line.Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries)
.Select(x => double.Parse(x)).ToArray())
.ToArray();