Je souhaite que l'utilisateur saisisse String
et remplace le caractère de nouvelle ligne \n
par ,
J'ai essayé :
String test ="s1\ns2\ns3\ns4";
System.out.println(test.replaceAll("\n",","));
La sortie était s1, s2, s3, s4
Mais lorsque j'essaie le même code en obtenant des informations de l'interface utilisateur, cela ne fonctionne pas.
Lorsque je le corrige, le test de chaîne (que j’ai codé en dur) est traité comme,
s1
s2
s3
s4
mais la chaîne de l'interface utilisateur est "s1\ns2\ns3\ns4
".
S'il vous plaît suggérer ce qui ne va pas.
\n
est le caractère de nouvelle ligne. Si vous devez remplacer le caractère de barre oblique inverse suivi de n
, vous devez alors utiliser ceci:
String test ="s1\ns2\ns3\ns4";
System.out.println(test.replaceAll("\\n",","));
Mettre à jour:
Vous pouvez utiliser le System.lineSeparator();
au lieu du caractère \n
.
System.out.println(test.replaceAll(System.lineSeparator(),","));
Java.util.regex.Pattern documentation spécifie les terminateurs de ligne sous la forme:
Un terminateur de ligne est une séquence d'un ou deux caractères qui marque la fin D'une ligne de la séquence de caractères entrée. Les éléments suivants sont Reconnus comme terminateurs de ligne:
Caractère de nouvelle ligne (saut de ligne) ('\ n'), Caractère de retour de chariot suivi immédiatement par un caractère de nouvelle ligne ("\ r\n"), Caractère de retour de chariot autonome ('\ r'), Un caractère de ligne suivante ('\ u0085'), Un caractère de séparation de ligne ('\ u2028'), ou Un paragraphe- caractère séparateur ('\ u2029).
Votre terminateur de ligne, à partir de textarea, est\r\n (CR/LF).
regex pour cela est [\r\n]+
Comme l'anacron l'a déjà souligné, "\ n" est un caractère spécial et différent de l'entrée utilisateur "\ n", car l'entrée utilisateur est transformée en "\\ n".
La chaîne Java après la saisie de l'utilisateur ressemblera à
String test ="s1\\ns2\\ns3\\ns4";
et pas comme votre chaîne de test
String test ="s1\ns2\ns3\ns4";
L'utilisateur entrera un caractère unique et le clavier '\' sera transformé en un caractère Java '\\'.
Utilisation de Regex
:
public class Program
{
public static void main(String[] args) {
String str = "s1\ns2\ns3\ns4";
str = str.replaceAll("(\r\n|\n)", ",");
System.out.println(str);
}
}
outout: s1, s2, s3, s4