J'ai ficelle comme ça
"hello
Java
book"
Je veux retirer\r et\n de la chaîne (bonjour\r\njava\r\nbook). Je veux une chaîne comme "hellojavabook". Comment puis-je faire ceci?
Regex avec replaceAll.
public class Main
{
public static void main(final String[] argv)
{
String str;
str = "hello\r\njava\r\nbook";
str = str.replaceAll("(\\r|\\n)", "");
System.out.println(str);
}
}
Si vous voulez uniquement supprimer\r\n quand il s'agit de paires (le code ci-dessus supprime soit\r ou\n), procédez comme suit:
str = str.replaceAll("\\r\\n", "");
public static void main(final String[] argv)
{
String str;
str = "hello\r\n\tjava\r\nbook";
str = str.replaceAll("(\\r|\\n|\\t)", "");
System.out.println(str);
}
Il serait également utile d’ajouter la tabulation dans regex.
Si vous voulez éviter l'expression régulière ou si vous devez cibler une machine virtuelle Java antérieure, String.replace () fera:
str=str.replace("\r","").replace("\n","");
Et pour supprimer une paire CRLF:
str=str.replace("\r\n","");
Ce dernier est plus efficace que de créer une expression régulière pour faire la même chose. Mais je pense que le premier sera plus rapide en regex puisque la chaîne n’est analysée qu’une seule fois.
Étant donné une chaîne str:
str = str.replaceAll("\\\\r","")
str = str.replaceAll("\\\\n","")
Avez-vous essayé d’utiliser la méthode replaceAll pour remplacer toute occurrence de\n ou\r par la chaîne vide?
Vous pouvez utiliser unescapeJava
à partir de org.Apache.commons.text.StringEscapeUtils
comme ci-dessous
str = "hello\r\njava\r\nbook";
StringEscapeUtils.unescapeJava(str);
static byte[] discardWhitespace(byte[] data) {
byte groomedData[] = new byte[data.length];
int bytesCopied = 0;
for (int i = 0; i < data.length; i++) {
switch (data[i]) {
case (byte) '\n' :
case (byte) '\r' :
break;
default:
groomedData[bytesCopied++] = data[i];
}
}
byte packedData[] = new byte[bytesCopied];
System.arraycopy(groomedData, 0, packedData, 0, bytesCopied);
return packedData;
}
Code trouvé sur le projet commons-codec.
Vous pouvez soit directement passer le terminateur de ligne, par exemple\n, si vous connaissez le terminateur de ligne sous Windows, Mac ou UNIX. Sinon, vous pouvez utiliser le code suivant pour remplacer les sauts de ligne dans l’un des trois principaux systèmes d’exploitation.
str = str.replaceAll("\\r\\n|\\r|\\n", " ");
La ligne de code ci-dessus remplacera les sauts de ligne par des espaces dans Mac, Windows et Linux . Vous pouvez également utiliser le séparateur de ligne. Cela fonctionnera pour tous les systèmes d'exploitation. Ci-dessous l'extrait de code pour séparateur de lignes.
String lineSeparator=System.lineSeparator();
String newString=yourString.replace(lineSeparator, "");