HOWTO · Csharp

Retorno de carro en C#

En este artículo, aprenderemos el retorno de carro en una cadena en C#.

En esta página

En C#, usa Console.WriteLine() para escribir en la consola, \n dentro de una cadena cuando necesites un salto de línea (LF) y Environment.NewLine al crear texto para la plataforma actual. El retorno de carro (\r) y el salto de línea (\n) son caracteres de control distintos; usa la secuencia que espere el formato de archivo o el sistema receptor. Los ejemplos de código y las etiquetas de salida se conservan en inglés.

Usa Console.WriteLine() para escribir una línea o una línea en blanco

Console.WriteLine(value) escribe el valor seguido del terminador de línea de la consola. Sin parámetros, escribe únicamente un terminador, lo que crea una línea en blanco entre el texto que lo rodea. El terminador se añade al escribir en la salida; no modifica la cadena que se pasa al método.

Ejecuta este ejemplo:

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("First line");
        Console.WriteLine();
        Console.WriteLine("Second line");
    }
}
First line

Second line

Inserta \n dentro de una cadena de C#

En un literal de cadena normal de C#, \n es una secuencia de escape para el carácter de salto de línea (LF). Colócala donde deba ir el salto: el compilador almacena el carácter, no los dos caracteres visibles, la barra invertida y la letra n. Es una opción práctica para el texto que controlas directamente. \x0A es otra forma de representar el mismo carácter, pero \n suele ser más fácil de reconocer. En una cadena textual literal, las secuencias de escape no se interpretan; para este caso, usa un literal de cadena normal.

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

using System;

class Program
{
    static void Main()
    {
        string message = "First line\nSecond line";
        Console.WriteLine(message);
    }
}
First line
Second line

Usa Environment.NewLine para el salto de línea de la plataforma

Usa Environment.NewLine al crear una cadena cuyos separadores de línea deban seguir la convención del entorno actual. Su valor es la secuencia de salto de línea de ese entorno. Resulta útil para archivos de texto orientados a la plataforma y para mensajes construidos, pero no hace que el texto sea compatible con todos los protocolos: formatos como HTTP, algunas variantes de CSV o un servicio remoto pueden establecer sus propias reglas para los finales de línea. Por separado, Console.WriteLine() añade un terminador al escribir; por eso, si agregas Environment.NewLine a una cadena y luego llamas a WriteLine(), puede aparecer otro salto al final.

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

using System;

class Program
{
    static void Main()
    {
        string message = "First line" + Environment.NewLine + "Second line";
        Console.WriteLine(message);
    }
}
First line
Second line

Elige \n, \r, \r\n o \x0A según su significado

\n es el salto de línea (LF) y \r es el retorno de carro (CR). Históricamente, CR vuelve al inicio de la línea y LF avanza a la siguiente; muchos sistemas de texto tratan LF por sí solo como final de línea, mientras que la convención de texto de Windows suele usar CRLF (\r\n). Los sistemas antiguos también usaban CR por sí solo. Son convenciones, no formas intercambiables: elige la representación que requiera el destino, sobre todo al escribir un protocolo o un formato de archivo. En los literales de cadena de C#, \x0A representa el mismo carácter LF que \n; para los saltos de línea habituales, prefiere \n. Usa Environment.NewLine solo cuando corresponda seguir la convención de la plataforma.

Convierte los saltos de línea de C# a <br> HTML en ASP.NET

Para mostrar como HTML texto que contiene saltos de línea, primero codifica el texto como HTML y luego reemplaza las secuencias de salto por <br>. Busca CRLF antes de CR o LF por separado, de modo que un final de línea de Windows produzca un solo salto HTML. El ejemplo usa únicamente texto de muestra fijo; si el texto procede de una solicitud o de un usuario, conserva la codificación para evitar la inyección de marcado. En ASP.NET, prefiere los mecanismos habituales de codificación de salida del framework para la tecnología de vistas que uses.

El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.

using System;
using System.Net;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string input = "First line\r\nSecond <line>";
        string encoded = WebUtility.HtmlEncode(input);
        string html = Regex.Replace(encoded, @"\r\n|\r|\n", "<br>");
        Console.WriteLine(html);
    }
}
First line<br>Second &lt;line&gt;