165 votes

Comment supprimer les caractères de nouvelle ligne d'une chaîne de caractères ?

J'ai une chaîne au format suivant

string s = "This is a Test String.\n   This is a next line.\t This is a tab.\n'

Je veux supprimer toutes les occurrences de \n y \r de la chaîne de caractères ci-dessus.

J'ai essayé string s = s.Trim(new char[] {'\n', '\r'}); mais ça n'a pas aidé.

294voto

Kirk Points 804

J'aime utiliser les expressions régulières. Dans ce cas, vous pourriez le faire :

string replacement = Regex.Replace(s, @"\t|\n|\r", "");

Les expressions régulières ne sont pas aussi populaires dans le monde .NET qu'elles ne le sont dans les langages dynamiques, mais elles offrent une grande puissance pour manipuler les chaînes de caractères.

68voto

Jason Points 125291

Vous voulez utiliser String.Replace pour supprimer un caractère.

s = s.Replace("\n", String.Empty);
s = s.Replace("\r", String.Empty);
s = s.Replace("\t", String.Empty);

Notez que String.Trim(params char[] trimChars) supprime uniquement les caractères de tête et de queue dans trimChars de l'instance invoquée.

Vous pourriez créer une méthode d'extension, qui évite les problèmes de performance liés à la création de nombreuses chaînes temporaires :

static string RemoveChars(this string s, params char[] removeChars) {
    Contract.Requires<ArgumentNullException>(s != null);
    Contract.Requires<ArgumentNullException>(removeChars != null);
    var sb = new StringBuilder(s.Length);
    foreach(char c in s) { 
        if(!removeChars.Contains(c)) {
            sb.Append(c);
        }
    }
    return sb.ToString();
}

37voto

Matthew T. Baker Points 920

Je sais qu'il s'agit d'un vieux post, mais j'ai pensé que je devais partager la méthode que j'utilise pour supprimer les caractères des nouvelles lignes.

s.Replace(Environment.NewLine, "");

Références :

Méthode MSDN String.Replace y Propriété MSDN Environment.NewLine

13voto

cdhowie Points 62253

Si la vitesse et la faible utilisation de la mémoire sont importantes, faites quelque chose comme ceci :

var sb = new StringBuilder(s.Length);

foreach (char i in s)
    if (i != '\n' && i != '\r' && i != '\t')
        sb.Append(i);

s = sb.ToString();

5voto

Mahmoud ElMansy Points 31

Faites-le.

s = s.Replace(" \n ", String.Empty).Replace(" \t ", String.Empty).Replace(" \r ", String.Empty) ;

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