2010-12-16 23 views
5

Bien chicos, estoy haciendo una función para guardar un archivo. Me he encontrado con un problema porque cuando guardo los datos de cuadros de texto multilínea, se guarda x cantidad de líneas como x cantidad de líneas en el archivo de texto.¿Cómo guardo un cuadro de texto multilínea como una línea en un archivo de texto?

Así por ejemplo, si el usuario ha introducido:

line one 
line two 
line three 

sería una muestra de como:

line one 
line two 
line three 

como quiero que se muestre como:

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

El código que tengo es:

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

¿Alguna idea de cómo puedo guardar archivos de texto de varias líneas como una sola línea? Gracias.

Respuesta

4

Reemplazar Newline personaje con @" \n " o " \\n ", utilizando @ hacer caso omiso de cualquier carbón de escape

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

trabajado. ¡¡gracias!! – RHodgett

+0

Gracias, ayudó a resolver uno de mis problemas también. – Mythul

1

Es toda una línea de verdad;)

cuadros de texto de líneas múltiples, dependiendo de la plataforma (Win32 aquí) para guardar como:

Línea \ r \ n Línea \ r \ n Línea \ r \ n

Así que solo necesita reemplazar \ r \ n con \ n o el reemplazo de caracteres que desee.

+0

\ r \ n está bien, sin embargo, parece que se guarda automáticamente como multilínea en la matriz SaveFile aunque se haya guardado como una sola cadena de líneas ... raro. – RHodgett

2

Creo que es posible que deba hacer algo como esto. No estoy seguro de cuál es la mejor manera de mostrar los personajes de escape. Además, usaría un 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

Si se obtienen los hilos de múltiples líneas en una matriz de cadenas, sólo podía unirse a ellos en una sola línea:

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

si es todo una sola línea, un reemplazo simple haría el truco,

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

Acabo de probar esto y por alguna razón sigue emitiendo el texto como multilínea en el archivo de texto. Esto no tiene ningún sentido. – RHodgett

Cuestiones relacionadas