109 votes

Quelle est la façon la plus simple en C# pour couper un saut de ligne et hors d'une chaîne de caractères?

Je veux faire en sorte que _content ne se termine pas par un caractère de Saut de ligne:

_content = sb.ToString().Trim(new char[] { Environment.NewLine });

mais le code ci-dessus ne fonctionne pas depuis la Garniture ne semble pas avoir une surcharge de paramètre pour une collection de chaînes, que des personnages.

Quel est le plus simple one-liner pour supprimer un Enivronment.De retour à la ligne à partir de la fin d'une chaîne de caractères?

248voto

Simon Wilson Points 2801

Les ouvrages suivants, pour moi.

sb.ToString().TrimEnd( '\r', '\n' );

ou

sb.ToString().TrimEnd( Environment.NewLine.ToCharArray());

36voto

xr280xr Points 2057

Trim() supprime \r\n pour moi (à l'aide .NET 4.0).

14voto

Jon Skeet Points 692016

Comment à ce sujet:

public static string TrimNewLines(string text)
{
    while (text.EndsWith(Environment.NewLine))
    {
        text = text.Substring(0, text.Length - Environment.NewLine.Length);
    }
    return text;
}

C'est quelque peu inefficace s'il y a plusieurs retours à la ligne, mais ça marchera.

Sinon, si vous n'avez pas l'esprit, il parage (dire) "\r\r\r\r" ou "\n\n\n\n" plutôt que de simplement en "\r\n\r\n\r\n":

// No need to create a new array each time
private static readonly char[] NewLineChars = Environment.NewLine.ToCharArray();

public static string TrimNewLines(string text)
{
    return text.TrimEnd(NewLineChars);
}

9voto

Scott Weinstein Points 11404

Utiliser le Cadre. La ReadLine() la méthode a ceci à dire:

Une ligne est définie comme une séquence de caractères suivie d'un saut de ligne ("\n"), un retour chariot ("\r") ou d'un retour chariot immédiatement suivi par un saut de ligne ("\r\n"). La chaîne qui est retourné ne contient pas le retour chariot ou de la ligne les aliments.

Donc la suite fera l'affaire

_content = new StringReader(sb.ToString()).ReadLine();

6voto

heavyd Points 8845

Ce sujet

_content = sb.ToString().Trim(Environment.NewLine.ToCharArray());

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X