2010-12-16 77 views
5

好吧,我正在製作一個保存文件的功能。我遇到過一個問題,那就是當我從多行文本框中保存數據時,它將x行數量保存爲文本文件中的x行數量。如何將多行文本框保存爲文本文件的一行?

因此,例如,如果用戶輸入:

line one 
line two 
line three 

它會顯示爲:

line one 
line two 
line three 

,因爲我希望它顯示爲:

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

我的代碼是:

   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); 

任何想法如何將多行文本文件保存爲一行?謝謝。

回答

4

更換Newline字符與@" \n "" \\n ",用@忽略任何逃逸字符

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

工作。謝謝!! – RHodgett 2010-12-16 15:43:32

+0

謝謝,它也幫助我解決了我的一個問題。 – Mythul 2012-12-29 11:55:10

1

這都是一個行真的;)

取決於平臺多行文本框的(Win32這裏)會節省:

線\ r \ n 行\ r \ n 行\ r \ n

因此,您只需將\ r \ n替換爲\ n或您想要的任何字符替換。

+0

\ r \ n很好,但它似乎自動保存爲SaveFile數組中的多行,即使它被保存爲單行字符串......奇怪。 – RHodgett 2010-12-16 15:40:47

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 2010-12-16 15:39:06

相關問題