none
Como pongo un salto de linea en un archivo txt.

    Question

  • Saludos.

    Quiero insertar una cadena en un archivo txt, ya lo puedo hacer, pero lo q quiero saber, es como dentro de mi cadena puedo poner un salto de linea. Para q se refleje en el txt.

    Ejemplo

    string micadena =  "Esto es un ejemplo para insertar un salto de linea. Esto quiero q aparezca en otra linea.";

    Asi q el archivode txt, quiero q me apareza asi.

                  Esto es un ejemplo para insertar un salto de linea.

                  Esto quiero q aparezca en otra linea.

    ya intente el \n, pero no me funciono.

    y mi codigo usa esto:

    objWriter.WriteLine(micadena);

    Estas son cadenas largas, asi q no puedo dividirlas, ok.

     

    Bueno espero me alla dado a entender. saludos y gracias de antemano

     

     

    Thursday, July 28, 2011 5:20 PM

Answers

  • hola

    creo que tendrias que cortar la cadena en als dos mitades para ponerlas a cada una con un WriteLine()

    string micadena = "Esto es un ejemplo para insertar un salto de linea. Esto quiero q aparezca en otra linea.";
    
    string[] partes = micadena.split(new char[]{'.'});
    
    foreach(string item in partes)
    {
      objWriter.WriteLine(item);
    }
    



    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Thursday, July 28, 2011 5:29 PM
  • Hola :

     

    Te paso otra forma de trabajar con archivos de Texto y Cadenas:

     

     

    using (StringWriter sw = new StringWriter())
          {
    
            sw.WriteLine("Hola");
            sw.WriteLine("Hola");        
            using (FileStream fs = new FileStream("d:\\archivo.txt", FileMode.OpenOrCreate, FileAccess.Write))
            {
              byte[] buffer = System.Text.Encoding.Default.GetBytes(sw.ToString());
              fs.Write(buffer, 0, buffer.Length);
    
            }
          }
    

     

    Otro Objeto bastante eficiente a la hora de trabajar con cadenas es

    StringBuilder

    Este tiene un metodo que es AppendLine() con una sobrecarga para escribir directamente string AppendLine(string).

    Tanto el uno como el otro utilizan "\r\n" no "\n" que es lo que tu citas en tu mensajedo. De todas formas para que no se te olvide si "\r\n" o "\n" lo mas comodo es que utilices Environment.NewLine que es una constante  equivalente "\r\n";

     

    Si quieres concatenar nueva linea a una cadena la forma correcta puede ser el siguiente código que te voy a pasar aunque te recomiendo que utilices StringBuilder o StringWriter.

     

    string Cadena = "Hola";
     string Resultado = string.Format("{0}{1}", Cadena, Environment.NewLine);
    


    Lo que nunca te recomendaria es que utilizaces el signo + para concatenar cadenas.

    Te paso un link para que veas la diferencia de eficiencia entre un método y el otro.

     

    http://stackoverflow.com/questions/3480188/am-i-undermining-the-efficiency-of-stringbuilder

     

    Saludos,


    phurtado
    Thursday, July 28, 2011 5:57 PM
  • Hola:

    Perdón por el enfoque de mi pregunta anterior, pero no me di cuenta que lo que se quería es  agregar un salto de linea por cada punto que encuentre. si esto es así paso un fragmento de código para realizar eso.

     

     

     string Replace = string.Format(".{0}", Environment.NewLine);
       string cad = "Hola esto es una prueba.Mi nueva cadena.Nueva Linea";
       string pattern = @"([./]{1})";
       string result = Regex.Replace(cad, pattern, Replace);
    
       using (FileStream fs = new FileStream("d:\\archivo.txt", FileMode.OpenOrCreate, FileAccess.Write))
       {
        byte[] buffer = System.Text.Encoding.Default.GetBytes(result);
        fs.Write(buffer, 0, buffer.Length);
    
       }
    

     

    Se están utilizando Expresiones Regulares y he basado la respuesta en el siguiente hilo.

    http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/918c7a49-51a9-4fa1-9ad4-6d2f1e29f196/#6d87bcdd-dc0a-44e2-83c6-a15d526fcee5

     

    Saludos,


    phurtado
    Thursday, July 28, 2011 7:48 PM

All replies

  • hola

    creo que tendrias que cortar la cadena en als dos mitades para ponerlas a cada una con un WriteLine()

    string micadena = "Esto es un ejemplo para insertar un salto de linea. Esto quiero q aparezca en otra linea.";
    
    string[] partes = micadena.split(new char[]{'.'});
    
    foreach(string item in partes)
    {
      objWriter.WriteLine(item);
    }
    



    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Thursday, July 28, 2011 5:29 PM
  • Gracias de antemano, el problema es q son muy largas, y no puedo cortarlas, no crees q exista otra solucion??
    Thursday, July 28, 2011 5:46 PM
  • el tema es que aunque exista otra opcion de alguna forma necesitas poner algo que marque el salto de linea

    pero ya tienes el texto largo como has pensado parsearlo para poner algo que marque el salto

    si se te dificilta cirtarlo con el split() poner algun caracter en medio para el salto sera aun mas complejo


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Thursday, July 28, 2011 5:51 PM
  • Hola :

     

    Te paso otra forma de trabajar con archivos de Texto y Cadenas:

     

     

    using (StringWriter sw = new StringWriter())
          {
    
            sw.WriteLine("Hola");
            sw.WriteLine("Hola");        
            using (FileStream fs = new FileStream("d:\\archivo.txt", FileMode.OpenOrCreate, FileAccess.Write))
            {
              byte[] buffer = System.Text.Encoding.Default.GetBytes(sw.ToString());
              fs.Write(buffer, 0, buffer.Length);
    
            }
          }
    

     

    Otro Objeto bastante eficiente a la hora de trabajar con cadenas es

    StringBuilder

    Este tiene un metodo que es AppendLine() con una sobrecarga para escribir directamente string AppendLine(string).

    Tanto el uno como el otro utilizan "\r\n" no "\n" que es lo que tu citas en tu mensajedo. De todas formas para que no se te olvide si "\r\n" o "\n" lo mas comodo es que utilices Environment.NewLine que es una constante  equivalente "\r\n";

     

    Si quieres concatenar nueva linea a una cadena la forma correcta puede ser el siguiente código que te voy a pasar aunque te recomiendo que utilices StringBuilder o StringWriter.

     

    string Cadena = "Hola";
     string Resultado = string.Format("{0}{1}", Cadena, Environment.NewLine);
    


    Lo que nunca te recomendaria es que utilizaces el signo + para concatenar cadenas.

    Te paso un link para que veas la diferencia de eficiencia entre un método y el otro.

     

    http://stackoverflow.com/questions/3480188/am-i-undermining-the-efficiency-of-stringbuilder

     

    Saludos,


    phurtado
    Thursday, July 28, 2011 5:57 PM
  • Hola:

    Perdón por el enfoque de mi pregunta anterior, pero no me di cuenta que lo que se quería es  agregar un salto de linea por cada punto que encuentre. si esto es así paso un fragmento de código para realizar eso.

     

     

     string Replace = string.Format(".{0}", Environment.NewLine);
       string cad = "Hola esto es una prueba.Mi nueva cadena.Nueva Linea";
       string pattern = @"([./]{1})";
       string result = Regex.Replace(cad, pattern, Replace);
    
       using (FileStream fs = new FileStream("d:\\archivo.txt", FileMode.OpenOrCreate, FileAccess.Write))
       {
        byte[] buffer = System.Text.Encoding.Default.GetBytes(result);
        fs.Write(buffer, 0, buffer.Length);
    
       }
    

     

    Se están utilizando Expresiones Regulares y he basado la respuesta en el siguiente hilo.

    http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/918c7a49-51a9-4fa1-9ad4-6d2f1e29f196/#6d87bcdd-dc0a-44e2-83c6-a15d526fcee5

     

    Saludos,


    phurtado
    Thursday, July 28, 2011 7:48 PM