Basicaly我想逐行读取.txt文件。 当我读到每一行时,我希望识别双打之间的任何空格字符,例如 “12.1 34.478 67.9”就像X Y Z坐标一样。 一旦识别出空格,我就可以独立处理每个双值,并且可以对每个值进行特定的计算。
目前我正在使用它来读取行
string line = reader.ReadLine();
MessageBox.Show("Line Read: " + line + "");
我尝试了一种基于数组的方法,如下所示,但输出从未成功。
char[] block = new char[3];
reader.ReadBlock(block, 0, 3);
Console.WriteLine(block);
MessageBox.Show("" + block + "");
基本完成工作代码感谢#Bartosz看起来像
string line = reader.ReadLine();
var split = line.Split(' ');
var x = double.Parse(split[0]);
var y = double.Parse(split[1]);
var z = double.Parse(split[2]);
MessageBox.Show("X:" + x + " Y:" + y + " Z:" + z + "");
答案 0 :(得分:3)
当你获得你的行时,你可以:
var split = line.Split(' ');
然后你可以获得每一双:
var x = double.Parse(split[0]);
var y = double.Parse(split[0]);
var z = double.Parse(split[0]);
(或TryParse
取决于您的错误处理需求,您还应该检查您的拆分是否确实长度为3)。
注意:如果您的文件使用.
作为浮动指向分隔符,则操作系统上的语言环境设置会失败,在设置,
的计算机上它可能会失败。
答案 1 :(得分:2)
这样的事情怎么样?
var filename = "c:\\test.txt";
var allLines = File.ReadAllLines(filename);
var myList = new List<IEnumerable<double>>();
foreach (var line in allLines)
{
var currentLine = line.Split(' ').Select(i => double.Parse(i));
myList.Add(currentLine);
}
有点重构:
var myList = File.ReadAllLines("c:\\test.txt")
.Select(line => line.Split(' ')
.Select(double.Parse))
.ToList();
答案 2 :(得分:0)
http://msdn.microsoft.com/en-us/library/db5x7c0d.aspx
using System;
using System.IO;
class Test
{
public static void Main()
{
try
{
using (StreamReader sr = new StreamReader("TestFile.txt"))
{
String line = sr.ReadToEnd();
Console.WriteLine(line);
}
}
catch (Exception e)
{
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}
}
}
然后使用var stringlist = string.Split('')
和double.Parse
stringlist