web-dev-qa-db-fra.com

Supprimer les caractères de fin de ligne de la chaîne Java

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?

58
sahil

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", "");
117
TofuBeer
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.

11
ronicst

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.

11
Lawrence Dol

Étant donné une chaîne str:

str = str.replaceAll("\\\\r","")
str = str.replaceAll("\\\\n","")
4
Beep beep

Avez-vous essayé d’utiliser la méthode replaceAll pour remplacer toute occurrence de\n ou\r par la chaîne vide?

2
Rob Lachlan

Vous pouvez utiliser unescapeJava à partir de org.Apache.commons.text.StringEscapeUtils comme ci-dessous 

str = "hello\r\njava\r\nbook";
StringEscapeUtils.unescapeJava(str);
1
Srinivasan Sekar
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.

1
RazvanM

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, "");
0
Er.Naved Ali