2016-03-20 9 views
0

...テキストファイルのレコードを更新するには?ここで私に私のコードの更新がそのが機能していない価値の機能

  public void UpdateInFile(string modified,int id) 
      { 
       string[] lines = File.ReadAllLines("items.txt"); 
       for (int i = 0; i < lines.Length; i++) 
       { 
       if (lines[i][0] == id) 
       { 
        lines[i] = modified; 
       } 
       } 
       File.WriteAllLines("items.txt", lines); 
      } 
ここ

変更は、変更された文字列であり、データは

ID、説明、価格、数量

として、その中に保存されています

特定のIDに対して格納されたデータを置き換えたい

+1

どうしたのですか? –

+0

"それは動作していません" - 入力内容は何ですか、ファイル内容は何ですか、正確には何が起こっていますか? –

+1

'lines [i] [0] == id'は私には問題があるようです。 'char'であるidの最初の文字と' int'を比較します。私はこれがあなたが望むものだとは思わない。 –

答えて

1

をお使いのファイルの行は、あなたの入力文字列の同じフォーマットを持っているなら、あなたはそれぞれの行に分割を適用しているかどうかを確認する必要があります分割線の最初の要素は入力IDと一致します

public void UpdateInFile(string modified,int id) 
    { 
     string[] lines = File.ReadAllLines("items.txt"); 
     for (int i = 0; i < lines.Length; i++) 
     { 
      string[] parts = lines[i].Split(','); 
      if (Convert.ToInt32(parts[0]) == id) 
      { 
      lines[i] = modified; 
      } 
     } 
     File.WriteAllLines("items.txt", lines); 
    } 

この作業に対するあなたの制約を再現する私はあなたに、ある種のデータベースシステムを見てみることをお勧めします。本当に使いやすく、複雑なインストールを必要としないものもあります。もちろん、データベースとやり取りするNET Frameworkのクラスを使用する方法を学ぶ必要があります(ADO.NETチュートリアルの検索)

+0

私の問題はうまく説明されていませんでしたが、私の問題を解決してくれてありがとうございます。 、ありがとうございました。私はC# –

0

charとintを比較しようとしています。

if (lines[i][0] == id) {} 

使用してみてください:

int output; 
if (int.TryParse(lines[i][0], out output)) {} 

幸運

+0

'id'が複数の数字で表現されている場合、これは機能しません。 –

関連する問題