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?
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.
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.
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")
Essayez \r\n
où \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.
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.
Essayez d’ajouter des caractères .append('\r').append('\n');
au lieu de String .append("\\r\\n");