2

基本的に私は.txtファイルを1行ずつ読みたいと思っています。各行を読むときに、double間のスペース文字、たとえば「12.134.47867.9」をXYZ座標のようなものとして認識したいと思います。スペースが認識されると、各double値を個別に処理し、それぞれに対して特定の計算を実行できます。

現在、これを使用して行を読み取っています

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 + "");
4

3 に答える 3

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であるかどうかも確認する必要があります)。

注:OSのロケール設定により、ファイル.がフロートポインティングセパレーターとして使用されている場合、,が設定されているマシンでは失敗する可能性があります。

于 2012-09-20T08:13:35.727 に答える
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();
于 2012-09-20T08:23:10.603 に答える
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

于 2012-09-20T08:13:05.923 に答える