2010-12-16 139 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

相关问题