0

値を含む CSV ファイルがあります。

,Vb(M),Ke23(M^-1),
AAA、3.91E-06、2.21E+06
BBB、6.65E-03、3.50E+03
CCC、0.213、1503.759398
DDD,1.37E+00,0.00E+00

ファイルを読み込んで数値だけをCSVファイルに保存したい。

ここで紹介されているコードを操作してこれを行いたいと思います: http://www.codeproject.com/Articles/415732/Reading-and-Writing-CSV-Files-in-Csharp

または、数値を読み取って保存する簡単な方法はありますか?

4

5 に答える 5

3

それはかなり単純です。コンマで分割されたファイルの行をループしてから、TryParseこのようなものを使用してトークンをループするだけです。

List<double> numbers = new List<double>();
double buffer = 0;
while (string line = reader.ReadLine() != null)
{
      string[] tokens = line.Split(',');
      foreach (string s in tokens)
      {
          if (double.TryParse(s, out buffer))
              numbers.Add(buffer);
      }
}

// to print the values with iteration
foreach (double d in numbers)
     Console.WriteLine(d.ToString());

// to print with LINQ
numbers.Select(x => Console.WriteLine(x.ToString()));

免責事項: コードはブラウザーで作成したため、コンパイルもテストもされていません。ちょっとした調整が必要かもしれませんが、それが最も簡単な方法です。

于 2013-05-21T22:18:47.860 に答える
0

あなたの質問を正しく理解できれば、このようなことを試すことができます。

注:これは、あなたが提供したような完全に形成されたCSVファイルを想定しています。エラーチェックを含める必要があります。そうしないと、ある時点で確実に失敗します

string[] lines = File.ReadAllLines("MyCsvFile");
Dictionary<string, double> parsedCsv = new Dictionary<string,double>();

// Read the first line
string col1 = "", col2 = "";
if(lines.Length > 0)
{
    string[] tokens = lines.Split(',');
    col1 = tokens[1];
    col2 = tokens[2];
}

for(int i = 1; i < lines.length; i++)
{
    string[] tokens = lines.Split(',');
    string varName1 = tokens[0] + "." + col1;
    string varName2 = tokens[0] + "." + col2;
    double value = double.Parse(tokens[1]);
    parsedCsv.Add(varName1, value);
    value = double.Parse(tokens[2]);
    parsedCsv.Add(varname2, value);
}

これで、ディクショナリから値にアクセスできるようになりました。

double AAA1 = parsedCsv["AAA.Vb(M)"];
double AAA2 = parsed Csv["AAA.Ke23(M^-1)"]

等々。

私はエラーチェックをしていないことに注意してください。Dictionary<> を介して、実行時に解析された値を変数の関連付けに関連付ける方法のみを示しています。リンクされた CsvReader ライブラリの使用方法は含めませんでした。使用方法について具体的に質問がある場合は、別の質問をします。

于 2013-05-21T23:04:37.763 に答える