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 souhaite supprimer toutes les occurrences de \n
et \r
de la chaîne ci-dessus.
J'ai essayé string s = s.Trim(new char[] {'\n', '\r'});
mais cela n'a pas aidé.
Vous souhaitez 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)
ne supprime que les caractères de début et de fintrimChars
de l'instance appelée sur.Vous pouvez créer une méthode d'extension, ce qui évite les problèmes de performances de ce qui précède de créer beaucoup de 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(); }
la source
Je sais que c'est un ancien message, mais j'ai pensé partager la méthode que j'utilise pour supprimer les caractères de nouvelle ligne.
s.Replace(Environment.NewLine, "");
Références:
MSDN String.Replace, méthode et propriété MSDN Environment.NewLine
la source
Si la vitesse et la faible utilisation de la mémoire sont importantes, procédez comme suit:
var sb = new StringBuilder(s.Length); foreach (char i in s) if (i != '\n' && i != '\r' && i != '\t') sb.Append(i); s = sb.ToString();
la source
fais juste ça
s = s.Replace("\n", String.Empty).Replace("\t", String.Empty).Replace("\r", String.Empty);
la source
Une approche LINQ:
string s = "This is a Test String.\n This is a next line.\t This is a tab.\n'"; string s1 = String.Join("", s.Where(c => c != '\n' && c != '\r' && c != '\t'));
la source
string.Join
qui appelleraToString
sur chaquechar
retourné par la requête. Mieux vaut simplement transmettre les résultats de la requête austring
constructeur.s1 = new string(s.Where(....).ToArrary());
Le bon choix dépend vraiment de la taille de la chaîne d'entrée et des exigences en matière de force et de mémoire, mais j'utiliserais une expression régulière comme
string result = Regex.Replace(s, @"\r\n?|\n|\t", String.Empty);
Ou si nous devons appliquer le même remplacement plusieurs fois, il est préférable d'utiliser une version compilée pour le Regex comme
var regex = new Regex(@"\r\n?|\n|\t", RegexOptions.Compiled); string result = regex.Replace(s, String.Empty);
REMARQUE: différents scénarios nécessitent différentes approches pour obtenir les meilleures performances et la consommation de mémoire minimale
la source
Eh bien ... j'aimerais que vous compreniez des zones plus spécifiques de l'espace.
\t
est en fait un espace horizontal et non vertical. (testez l'insertion\t
dans le Bloc-notes)Si vous utilisez Java, utilisez simplement
\v
. Voir la référence ci-dessous.Mais je suis conscient que vous utilisez .NET. Ma réponse au remplacement de chaque espace vertical est donc ...
string replacement = Regex.Replace(s, @"[\n\u000B\u000C\r\u0085\u2028\u2029]", "");
la source
string remove = Regex.Replace(txtsp.Value).ToUpper(), @"\t|\n|\r", "");
la source
Vous pouvez utiliser
Trim
si vous souhaitez supprimer du début et de la fin.string stringWithoutNewLine = "\n\nHello\n\n".Trim();
la source
Pour info,
Trim () le fait déjà.
L'exemple LINQPad suivant:
void Main() { var s = " \rsdsdsdsd\nsadasdasd\r\n "; s.Length.Dump(); s.Trim().Length.Dump(); }
Les sorties:
23 18
la source