7
votes

Java New Line Remplacement

Je me demande pourquoi je n'obtiens pas le résultat attendu avec celui-ci:

String text = null;
text = FileUtils.readFileToString(inFile);
Pattern p = Pattern.compile("<script language='javascript'>.+?</script>\n", Pattern.DOTALL);
text = p.matcher(text).replaceAll("");
out.write(text);


0 commentaires

3 Réponses :


20
votes

Les chaînes sont immuables. String Operations telles que RetourLL code> Ne modifiez pas l'instance que vous appelez avec, ils renvoient de nouvelles instances de chaîne. La solution consiste à attribuer la chaîne modifiée à votre variable d'origine.

t = t.replaceAll("\n", "");


1 commentaires

Pour être portable entre les OSES, utiliser system.geproperty ("line.sparator") au lieu du caractère Linefeed.



1
votes

Oui, \ n code> est spécial. C'est une séquence d'évacuation qui représente une nouvelle ligne. Vous devez vous échapper dans un littéral à chaîne afin que cela soit réellement interprété comme vous le souhaitez. Ajouter A \ avant la séquence de sorte qu'il ressemble à ceci:

String t = "1302248663033   <script language='javascript'>nvieor\\ngnroeignrieogi</script>";
t = t.replaceAll("\\n", "");
System.out.println(t);


1 commentaires

J'ai raté l'autre erreur que tout le monde a souligné. Vous devez faire le résultat du remplacement () appelez et utilisez-le, pas la chaîne d'origine.



0
votes
public static String escape(String s) {
    return s
            .replaceAll("\n", "")
            .replaceAll("\r", "");
}

0 commentaires