2017-05-17 12 views
0

私は開いて使用したテキストファイルの最後のカンマを削除しようとしています。 私はこの作業を試してみるために(String.LastIndexOf)関数を使用しています。テキストファイルからカンマの最後のインデックスを削除するにはどうすればよいですか?

ただし、動作しません。開いているテキストファイルの最後のカンマを削除するにはどうすればよいですか?私は削除最後のコンマを参照するには、ファイルをチェックインするとき

DialogResult openFile = openFileDialog1.ShowDialog(); 
if (openFile == DialogResult.OK) 
{ 
    Functions func = new Functions(); 
    string file = openFileDialog1.FileName; 
    string content = File.ReadAllText(file); 
    SaveFileDialog sfd = new SaveFileDialog(); 
    sfd.Filter = "Text File|*.txt"; 
    sfd.FileName = "New Text Doucment"; 
    sfd.Title = "Save As Text File"; 
    if (sfd.ShowDialog() == DialogResult.OK) 
    { 
     string path = sfd.FileName; 
     StreamWriter bw = new StreamWriter(File.Create(path)); 
     bw.WriteLine(content); 
     bw.Close(); 
     File.WriteAllLines(path, File.ReadAllLines(path).Select(x => string.Format("{0},", x))); 
     string newContent = File.ReadAllText(path); 
     newContent = newContent.Remove(newContent.LastIndexOf(",")); 
    } 
} 

はしかし、それは動作していない。ここで

は私がこれまで試してみました何ですか? 何か間違っているのですか、何か不足していますか?

ヘルプありがとうございました!

注:元のテキストファイルを取り出し、その内容を読み取り、各行の最後にカンマを追加します。私はそれを新しいテキストファイルに書き込んでいますが、SQL(ファイル)で実行されたときに問題が発生するため、最後のカンマを取り除く必要があります

+0

質問:ファイルを作成して「コンテンツ」を書き込むと、元のコンテンツ変数で作業していないのはなぜですか? – BugFinder

+0

ファイルにはカンマがまったく含まれていますか?そうでない場合は、例外が発生します。また、最後のコンマは削除しませんが、それ以降はすべて削除します。 –

答えて

1

結果をファイル:

File.WriteAllText(path, newContent); 

テキストをメモリに読み込んでプログラム内で操作するだけでは、読み込まれたファイルを自動的に更新しません。それは予期せぬ挙動であると言えます。

+0

私は完全なばかだ、明らかに感謝! – someguy76

0

あなたはテキストのみをメモリ上で操作していますが、これらの変更をファイルに書き込んだことはありません。

DialogResult openFile = openFileDialog1.ShowDialog(); 
     if (openFile == DialogResult.OK) 
     { 
      Functions func = new Functions(); 
      string file = openFileDialog1.FileName; 
      string content = File.ReadAllText(file); 
      SaveFileDialog sfd = new SaveFileDialog(); 
      sfd.Filter = "Text File|*.txt"; 
      sfd.FileName = "New Text Doucment"; 
      sfd.Title = "Save As Text File"; 
      if (sfd.ShowDialog() == DialogResult.OK) 
      { 
       content= content.Remove(content.LastIndexOf(",")); 
       string path = sfd.FileName;      
       File.WriteAllLines(path, content.Split(','));      
      } 
     } 

そしてこのコード行は、ここで不要である

Functions func = new Functions(); 

ようです。

+0

ああ、前に必要なときにiveを変更しました。この行を削除するのを忘れました – someguy76

+0

コンテンツには.splitがありません – someguy76

+0

ちょうどタイプミスです。スプリット –

2

あなたは、ちょうど

File.WriteAllText(path, string.Join("," + Environment.NewLine, File.ReadAllLines(path))); 

File.WriteAllLines(path, File.ReadAllLines(path).Select(x => string.Format("{0},", x))); 

を変更し、他の2つの行を削除する必要はありません。

注:+ Environment.NewLineは、ファイルに書き戻されたときに行を区切り、コメントに示唆したとおりに追加します。

+0

これがあります。最後のカンマを「削除」する最善の方法は、最初にカンマを追加しないことです。 - 多分あなたは '' + Environment.NewLine''を望みます。 – Corak

+0

@コーラ私はあなたが正しいと信じて、答えを修正するつもりです – Alex

+0

最後に新しい行がテキストファイルの最後の空でない行の末尾にカンマをつけていることがわかります。 SQL – someguy76

関連する問題