J'ai une chaîne qui contient du texte suivi d'une ligne vierge. Quel est le meilleur moyen de conserver la pièce avec du texte tout en supprimant la nouvelle ligne d'espacement à la fin?
Utilisez la méthode String.trim()
pour supprimer les espaces (espaces, nouvelles lignes, etc.) à partir du début et de la fin de la chaîne.
String trimmedString = myString.trim();
String.replaceAll("[\n\r]", "");
Si votre chaîne est potentiellement null
, envisagez d'utiliser StringUtils.trim()
- version null-safe de String.trim()
.
_String cleanString = dirtyString.strip() ; // Call new `String::string` method.
_
String::strip…
_L'ancienne méthode String::trim
a une définition étrange sur espace .
Comme indiqué dans ici , Java 11 ajoute de nouvelles méthodes strip…
à la classe String
. Celles-ci utilisent une définition plus claire des blancs selon Unicode. Voir les règles de cette définition dans la classe JavaDoc pour Character::isWhitespace
.
Exemple de code.
_String input = " some Thing ";
System.out.println("before->>"+input+"<<-");
input = input.strip();
System.out.println("after->>"+input+"<<-");
_
Ou vous pouvez décaper seulement le premier ou seulement le dernier blanc.
Vous ne mentionnez pas exactement quoi point (s) de code constituent vos nouvelles lignes. J'imagine que votre nouvelle ligne est probablement incluse dans cette liste de points de code ciblés par strip
:
String trimStartEnd = "\n TestString1 linebreak1\nlinebreak2\nlinebreak3\n TestString2 \n";
System.out.println("Original String : [" + trimStartEnd + "]");
System.out.println("-----------------------------");
System.out.println("Result String : [" + trimStartEnd.replaceAll("^(\\r\\n|[\\n\\x0B\\x0C\\r\\u0085\\u2028\\u2029])|(\\r\\n|[\\n\\x0B\\x0C\\r\\u0085\\u2028\\u2029])$", "") + "]");
Je vais également ajouter une réponse à cette question car, même si j'avais la même question, la réponse fournie ne suffisait pas. Après réflexion, je me suis rendu compte que cela pouvait se faire très facilement avec une expression régulière.
Pour supprimer nouvelles lignes depuis le début:
// Trim left
String[] a = "\n\nfrom the beginning\n\n".split("^\\n+", 2);
System.out.println("-" + (a.length > 1 ? a[1] : a[0]) + "-");
et fin d'une chaîne:
// Trim right
String z = "\n\nfrom the end\n\n";
System.out.println("-" + z.split("\\n+$", 2)[0] + "-");
Je suis certain que ce n'est pas le moyen le plus efficace de couper une chaîne. Mais cela semble être le moyen le plus simple et le plus simple d’intégrer une telle opération.
Notez que la même méthode peut être utilisée pour supprimer toute variation et combinaison de caractères à l’une ou l’autre des extrémités, car c’est une simple expression rationnelle.