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);
3 Réponses :
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", "");
Pour être portable entre les OSES, utiliser system.geproperty ("line.sparator") code> au lieu du caractère Linefeed.
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);
J'ai raté l'autre erreur que tout le monde a souligné. Vous devez faire le résultat du remplacement () code> appelez et utilisez-le, pas la chaîne d'origine.
public static String escape(String s) { return s .replaceAll("\n", "") .replaceAll("\r", ""); }