Comment supprimer le caractère de retour chariot (\r)
et le caractère (\n)
de nouvelle ligne à la fin d'une chaîne?
113
Comment supprimer le caractère de retour chariot (\r)
et le caractère (\n)
de nouvelle ligne à la fin d'une chaîne?
Cela supprimera toute combinaison de retours chariot et de retours à la ligne à partir de la fin de s
:
s = s.TrimEnd(new char[] { '\r', '\n' });
Edit : Ou comme JP le souligne gentiment, vous pouvez l'épeler plus succinctement comme suit:
s = s.TrimEnd('\r', '\n');
s = s.TrimEnd()
- comme le disent les documents: si trimChars est nul ou un tableau vide, les caractères d'espacement Unicode sont supprimés à la place. - voir String.TrimEnd'\r'
et'\n'
et rien d'autre, pas le caractère d'espace' '
par exemple.Cela devrait fonctionner ...
la source
Si vous utilisez plusieurs plates-formes, vous êtes plus en sécurité en utilisant cette méthode.
Il tiendra compte des différents caractères de retour à la ligne et de retour chariot.
la source
tst.TrimEnd( '\r', '\n' )
- est raisonnablement "sûre" dans la pratique puisque les principaux EOL ne sont [actuellement] que des combinaisons différentes de\r
et\n
, mais alexw est la "bonne" réponse. Laissez le CLR vous dire quels caractères sont dans la nouvelle ligne de cette plate-forme. EOL n'a pas toujours été des combos de 0D et 0AsEnvironment.NewLine
mais il ne semblait pas gérer les instances où\r
était présent sans\n
.TrimEnd('r','\n')
semble être plus fiable dans ce cas.s
étant la chaîne d'origine. (Notez les majuscules)la source
replace()
alorstrim()
pas surpuissant quandTrimEnd()
peut faire le travail seul, ou suis - je manque quelque chose?Ce qui précède est tout ce dont j'avais besoin pour supprimer '\ r \ n' de la fin de ma chaîne.
La réponse votée me semble fausse. Premièrement, cela n'a pas fonctionné lorsque j'ai essayé, deuxièmement, si cela fonctionnait, je m'attendrais à ce que s.TrimEnd ('\ r', '\ n') ne supprime que soit un '\ r' ou un '\ n' , donc je devrais l'exécuter deux fois sur ma chaîne - une fois pour quand '\ n' était à la fin et la deuxième fois pour quand '\ r' était à la fin (maintenant que le '\ n' était supprimé) .
la source
S'il y a toujours un seul CRLF, alors:
S'il peut l'avoir ou non, alors:
Ces deux éléments (de par leur conception) supprimeront au plus un seul CRLF. Mettez en cache l'expression régulière pour les performances.
la source
Pour nous VBers:
la source
la source
C'était trop facile - pour moi, je filtre certains éléments de courrier électronique. J'écris mon propre filtre de courrier indésirable personnalisé. Avec \ r et / ou \ n dans la chaîne, il effaçait tous les éléments au lieu de filtrer.
Donc, je viens de faire filter = filter.Remove ('\ n') et filter = filter.Remove ('\ r'). Je crée mon filtre de manière à ce qu'un utilisateur final puisse utiliser le Bloc-notes pour modifier directement le fichier afin qu'il ne soit pas possible de savoir où ces caractères pourraient s'intégrer - cela pourrait être autre qu'au début ou à la fin de la chaîne. Donc, les supprimer tous suffit.
Les autres entrées fonctionnent toutes, mais Supprimer pourrait être le plus simple?
J'ai appris un peu plus sur Regex à partir de cet article - un travail assez cool avec son utilisation ici.
la source
filter = filter.Remove('\n').Remove('\r');
J'utilise beaucoup de niveau d'effacement
et maintenant nous avons une rangée propre
la source
la source
C'est ce que je dois travailler pour moi.
la source