2008-10-22 19 views
163

Tengo una cadena.Agregar una nueva línea en una cadena en C#

string strToProcess = "[email protected]@[email protected]@[email protected]"; 

Necesito agregar una nueva línea después de cada aparición del símbolo "@" en la cadena.

Mi salida debe ser así

[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
+2

¿qué es lo que quiere decir con "el salto de línea no es eficaz en el archivo de texto"? ¿Cómo estás escribiendo en el archivo de texto? –

+4

Publica el código que usas para escribir el archivo. \ r \ n (windows - Environment.Newline) o \ n (Unix) debería funcionar ... – Gishu

Respuesta

364
string text = "[email protected]@[email protected]@[email protected]"; 

text = text.Replace("@", "@" + System.Environment.NewLine); 
+1

Pero necesito escribir esta información en un archivo de texto como este fkdfdsfdflkdkfk @ dfsdfjk72388389 @ kdkfkdfkkl @ jkdjkfjd @ jjjk @ The New line character no es efectivo en el archivo de texto. – balaweblog

+12

uso "\ r \ n", se muestra en el cuerpo de texto;) –

54

Se puede añadir un carácter de nueva línea después del símbolo @, así:

string newString = oldString.Replace("@", "@\n"); 

También se puede utilizar la propiedad NewLine en el Environment Clase (creo que es entorno).

+1

Pero tengo que escribir esta información en un archivo de texto como este fkdfdsfdflkdkfk @ dfsdfjk72388389 @ kdkfkdfkkl @ jkdjkfjd @ jjjk @ El carácter Nueva línea no es efectivo en el archivo de texto. – balaweblog

5

Una cadena de reemplazo simple hará el trabajo. Echar un vistazo al programa de ejemplo a continuación:

using System; 

namespace NewLineThingy 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string str = "[email protected]@[email protected]@[email protected]"; 
      str = str.Replace("@", "@" + Environment.NewLine); 
      Console.WriteLine(str); 
      Console.ReadKey(); 
     } 
    } 
} 
15

Las respuestas anteriores se acercan, pero para cumplir con el requisito real que la estancia cerca @ símbolo, que querría que para ser str.Replace("@", "@" + System.Environment.NewLine). Esto mantendrá el símbolo @ y agregará los caracteres de nueva línea apropiados para la plataforma actual.

+2

He editado una de las respuestas anteriores para reflejar esto. –

+0

Muchas gracias :-) –

6

A continuación, basta con modificar las respuestas anteriores a:

Console.Write(strToProcess.Replace("@", "@" + Environment.Newline)); 

Si no es necesario querer las nuevas líneas en el archivo de texto, entonces no conservarlo.

1

Según sus respuestas a todos los demás, algo como esto es lo que está buscando.

string file = @"C:\file.txt"; 
string strToProcess = "[email protected]@[email protected]@[email protected]"; 
string[] lines = strToProcess.Split(new char[] { '@' }, StringSplitOptions.RemoveEmptyEntries); 

using (StreamWriter writer = new StreamWriter(file)) 
{ 
    foreach (string line in lines) 
    { 
     writer.WriteLine(line + "@"); 
    } 
} 
5

como otros han dicho que la nueva línea de caracteres le dará una nueva línea en un archivo de texto en Windows. intente lo siguiente:

using System; 
using System.IO; 

static class Program 
{ 
    static void Main() 
    { 
     WriteToFile 
     (
     @"C:\test.txt", 
     "[email protected]@[email protected]@[email protected]", 
     "@" 
     ); 

     /* 
     output in test.txt in windows = 
     [email protected] 
     [email protected] 
     [email protected] 
     [email protected] 
     [email protected] 
     */ 
    } 

    public static void WriteToFile(string filename, string text, string newLineDelim) 
    { 
     bool equal = Environment.NewLine == "\r\n"; 

     //Environment.NewLine == \r\n = True 
     Console.WriteLine("Environment.NewLine == \\r\\n = {0}", equal); 

     //replace newLineDelim with newLineDelim + a new line 
     //trim to get rid of any new lines chars at the end of the file 
     string filetext = text.Replace(newLineDelim, newLineDelim + Environment.NewLine).Trim(); 

     using (StreamWriter sw = new StreamWriter(File.OpenWrite(filename))) 
     { 
      sw.Write(filetext); 
     } 
    } 
} 
+0

Solo vi su environment.newline == \ r \ n = true ahora (tal vez me lo perdí porque no es sintaxis de C#;)). Además, más información aquí http://msdn.microsoft.com/de-de/library/system.environment.newline.aspx. Acabo de tropezar con un problema similar al utilizar hardcoded \ n sin darme una nueva línea en Windows. –

0

También es posible usar string[] something = text.Split('@'). Asegúrese de utilizar comillas simples para rodear el "@" para almacenarlo como tipo char. Esto almacenará los caracteres hasta e incluyendo cada "@" como palabras individuales en la matriz. A continuación, puede generar cada uno (element + System.Environment.NewLine) utilizando un ciclo for o escribirlo en un archivo de texto usando System.IO.File.WriteAllLines([file path + name and extension], [array name]). Si el archivo especificado no existe en esa ubicación, se creará automáticamente.

0
protected void Button1_Click(object sender, EventArgs e) 
{ 
    string str = "[email protected]@[email protected]@[email protected]"; 
    str = str.Replace("@", "@" + "<br/>"); 
    Response.Write(str);  
} 
+0

Bienvenido a la comunidad SO. Gracias por responder la pregunta. Sin embargo, es una buena práctica agregar alguna explicación de por qué esto funciona. – phuzi

0
string strToProcess = "[email protected]@[email protected]@[email protected]"; 
var result = strToProcess.Replace("@", "@ \r\n"); 
Console.WriteLine(result); 

Output

+2

Si bien este código puede responder a la pregunta, proporcionar un contexto adicional con respecto a por qué y/o cómo responde este código a la pregunta mejora su valor a largo plazo. –

Cuestiones relacionadas