2010-12-16 17 views
5

皆さん、ファイルを保存する機能を作っています。私は、複数行のテキストボックスからデータを保存するときに、x行の量をテキストファイルのx行の量として保存するという問題に遭遇しました。複数行テキストボックスをテキストファイルに1行として保存するにはどうすればよいですか?

したがって、ユーザーが入力した場合例えば:

line one 
line two 
line three 

それはとして表示されるでしょう:

line one \n line two \n line three \n 

私が持っているコードを:私はそれのように表示したいよう

line one 
line two 
line three 

   savefile.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
       savefile.Title = "Save your file"; 
       savefile.FileName = ""; 
       savefile.Filter = "ChemFile (*.cd)|*.cd|All Files|*.*"; 

       if (savefile.ShowDialog() != DialogResult.Cancel) 
       {      
        // save the text file information 
        for (int i = 0; i < noofcrit; i++) 
        { 
         cdfile[i] = crittextbs[i].Text; 
        }      
       } 
        // Compile the file 
        SaveFile = savefile.FileName; 
        System.IO.File.WriteAllLines(SaveFile, cdfile); 

どのように私は複数のテキストファイルを1行として保存することができますか?ありがとう。

ライン\ rを\ nは ライン\ rを\ nは ライン\ R:;

答えて

4

は、任意のエスケープ文字を無視するよう@を使用して、@" \n "または" \\n "Newline文字を置き換え

string s= yourTextBox.Text.Replace(Environment.NewLine, @" \n ")); 
+0

が働いた。ありがとうございました!! – RHodgett

+0

ありがとう、それは私の問題の解決にも役立ちました。 – Mythul

1

それは本当にすべて1行のプラットフォームに応じて)

複数行のテキストボックス(ここではWin32のは)として保存されます\ n

だから、\ r \ nは\ nで置き換えてください。

+0

\ r \ nしかし、1行の文字列として保存されていても、自動的にSaveFile配列に複数行として保存されているようです。 – RHodgett

2

私はこのようなことをする必要があると思います。実際にエスケープ文字を表示するのが最善の方法であるかどうかはわかりません。また、私はStreamWriterを使用します。

string myData = txtMyTextBox.Text.Replace("\r"," \\r ").Replace("\n"," \\n "); 
using(System.IO.StreamWriter sw = new System.IO.StreamWriter(filePath)) 
{ 
    sw.Write(myData); 
} 
2

あなたは文字列配列で複数行の文字列を取得する場合、あなただけの単一の行にそれらを結合することができます:それはすべて、単一の行をだ場合

string[] multiline = new []{"multi","line","text"}; 
string singleLine = string.Join(@"\n",multiline); 

は、シンプルはどうしたら交換してくださいトリック、

string singleLine = multiline.Replace("\r",string.Empty).Replace("\n",@"\n"); 
+0

私はこれを試しましたが、なんらかの理由でテキストをテキストファイルに複数行として出力しています。これはまったく意味がありません。 – RHodgett

関連する問題