HOWTO · Csharp

Adicionar nova linha à string em C#

Aprenda três maneiras de adicionar uma quebra de linha a uma string em C#: usar `\n`, `Environment.NewLine` ou substituir um marcador específico em um texto existente.

Nesta página

Para adicionar uma quebra de linha a uma string em C#, inclua o escape de avanço de linha \n, use Environment.NewLine para o ambiente .NET atual ou substitua um marcador específico em um texto já existente. Escolha a sequência de quebra de linha adequada ao destino do texto; um formato de arquivo ou protocolo de rede pode exigir uma sequência específica.

Adicionar uma quebra de linha a uma string em C# com \n

O escape \n representa o caractere de avanço de linha (LF). Coloque-o onde a próxima linha deve começar em um literal de string. Ele representa o próprio caractere, sem escolher uma convenção de quebra de linha com base no sistema operacional. O escape \r representa o caractere de retorno de carro (CR); use-o quando o formato dos dados exigir CR ou um par CR/LF, caso o formato especifique os dois caracteres.

Execute este exemplo:

O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.

using System;

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

Isso é útil quando você controla a string e quer inserir um LF explicitamente. Se a string for lida por um sistema que exige outra convenção de quebra de linha, use a sequência especificada por esse sistema.

Usar Environment.NewLine para quebras de linha específicas da plataforma

Environment.NewLine fornece a sequência de quebra de linha do ambiente .NET atual. Use-a ao criar texto destinado a esse ambiente, como um arquivo de texto orientado à plataforma. Ela não detecta os requisitos de um formato de arquivo ou protocolo não relacionado. Se esses requisitos especificarem LF ou CR/LF, use diretamente a sequência exigida, mesmo que seja diferente da convenção do ambiente atual. Consulte a documentação da Microsoft sobre Environment.NewLine.

O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.

using System;

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

Console.WriteLine também termina a saída com uma quebra de linha. A sequência inserida separa as duas partes de message; a quebra de linha final é acrescentada pelo método de saída.

Adicionar uma quebra de linha depois que uma string é criada

Strings em C# são imutáveis, portanto alterar o texto produz uma nova string. String.Replace() retorna esse novo valor; atribua-o novamente à variável para manter a alteração. O método substitui todas as ocorrências do marcador especificado, então cada <break> na entrada se transforma em uma quebra de linha. Substituir um marcador específico é mais seguro do que substituir todos os pontos, pois frases comuns podem conter pontuação que deve permanecer no lugar. A documentação existente da Microsoft sobre String.Replace() descreve o método.

O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.

using System;

class Program
{
    static void Main()
    {
        string message = "First line.<break>Second line.";
        message = message.Replace("<break>", "\n");
        Console.WriteLine(message);
    }
}
First line.
Second line.

Use um marcador reservado para essa finalidade, que não possa aparecer como texto comum. Se a substituição tiver de seguir o ambiente atual, substitua-o por Environment.NewLine em vez de \n. Para textos montados por você, geralmente é mais simples incluir a quebra de linha desejada na string original do que editá-la depois.

Em conjunto, as três abordagens cobrem as principais opções: inserir LF em um literal, usar a sequência do ambiente atual ou converter um marcador reservado em texto existente. O formato ou protocolo de destino determina qualquer requisito mais específico para a quebra de linha; por isso, um mapeamento separado entre plataformas e formatos está fora do escopo desta tarefa.