web-dev-qa-db-fra.com

Comment créer une chaîne avec des retours chariots?

Pour un test JUnit, j'ai besoin d'une chaîne composée de plusieurs lignes. Mais tout ce que je reçois, c'est une chaîne à une seule ligne. J'ai essayé ce qui suit:

    String str = ";;;;;;\n" +
                 "Name, number, address;;;;;;\n" + 
                 "01.01.12-16.02.12;;;;;;\n" + 
                 ";;;;;;\n" + 
                 ";;;;;;";

J'ai aussi essayé \n\r au lieu de \n. System.getProperty ("line.separator") ne fonctionne pas aussi. il produit un \n dans String et aucun retour à la ligne. Alors, comment puis-je résoudre cela?

19
Bevor

Merci pour vos réponses. J'ai oublié que mes données sont stockées dans un List<String> qui est transmis à la méthode testée. L'erreur est que j'ai mis la chaîne dans le premier élément de ArrayList. C'est pourquoi j'ai pensé que la chaîne ne comportait qu'une seule ligne, car le débogueur ne m'avait montré qu'une entrée.

0
Bevor

Cela dépend de ce que vous entendez par "plusieurs lignes". Différents systèmes d'exploitation utilisent différents séparateurs de ligne.

En Java, \r est toujours le retour chariot et \n est un saut de ligne. Sous Unix, \n suffit pour une nouvelle ligne, alors que de nombreux programmes Windows nécessitent \r\n. Vous pouvez obtenir sur la plateforme par défaut newline utiliser System.getProperty("line.separator") ou String.format("%n") comme indiqué dans d'autres réponses.

Mais, en réalité, vous devez savoir si vous essayez de générer des nouvelles lignes spécifiques à un système d'exploitation. Par exemple, s'il s'agit d'un texte qui sera transmis dans le cadre d'un protocole spécifique, alors vous devriez voir ce que ce protocole est considéré comme une nouvelle ligne. Par exemple, RFC 2822 définit un séparateur de ligne de \r\n et doit être utilisé même si vous utilisez Unix. Donc, tout est une question de contexte.

37
Jon Skeet

Le moyen le plus rapide que je connaisse pour générer un caractère de nouvelle ligne dans Java est: String.format("%n")

Bien sûr, vous pouvez mettre ce que vous voulez autour du %n comme:

String.format("line1%nline2")

Ou même si vous avez beaucoup de lignes:

String.format("%s%n%s%n%s%n%s", "line1", "line2", "line3", "line4")

9
Words Like Jared

Essayez \r\n\r est un retour à la ligne. Assurez-vous également que votre sortie ne comporte pas de nouvelle ligne, car le débogueur peut vous afficher des caractères spéciaux sous la forme \n, \r, \t, etc.

3
Michał Niklas

Faites ceci: Étape 1: Votre chaîne

String str = ";;;;;;\n" +
            "Name, number, address;;;;;;\n" + 
             "01.01.12-16.02.12;;;;;;\n" + 
             ";;;;;;\n" + 
             ";;;;;;";

Étape 2: remplacez simplement tous les "\ n" par "% n". Le résultat est le suivant

String str = ";;;;;;%n" +
             "Name, number, address;;;;;;%n" + 
             "01.01.12-16.02.12;;;;;;%n" + 
            ";;;;;;%n" + 
            ";;;;;;";

Notez que je viens de mettre "% n" à la place de "\ n"

Étape 3: Appelez simplement format ()

str=String.format(str);

C'est tout ce que vous avez à faire. 

1
Amit Deo Panwar

Essayez d’ajouter des caractères .append('\r').append('\n'); au lieu de String .append("\\r\\n");

0
Xdg