用java中的<br />replace\ n和\ r \ n
这已经被几次提出了几种语言,但我不能得到它的工作。 我有这样的一个string
String str = "This is a string.\nThis is a long string.";
我试图用<br />
replace\n
str = str.replaceAll("(\r\n|\n)", "<br />");
但\n
并没有被取代。 我试图使用这个RegEx工具来validation,我看到了相同的结果。 inputstring没有匹配"(\r\n|\n)"
。 我究竟做错了什么 ?
这个对我有用。
public class Program { public static void main(String[] args) { String str = "This is a string.\nThis is a long string."; str = str.replaceAll("(\r\n|\n)", "<br />"); System.out.println(str); } }
结果:
这是一个string。<br />这是一个很长的string。
你的问题在别的地方。
一个更强大的版本,你正在尝试:
str = str.replaceAll("(\r\n|\n\r|\r|\n)", "<br />");
对我来说,这工作:
rawText.replaceAll("(\\\\r\\\\n|\\\\n)", "\\\n");
提示:使用正则expression式testing器进行快速testing,无需在您的环境中编译
由于我的帐户是新的,所以我不能对Nino van Hooff的答案进行投票。 如果您的string来自基于Windows的源(如基于aspx的服务器),则此解决scheme可以正常工作:
rawText.replaceAll("(\\\\r\\\\n|\\\\n)", "<br />");
似乎是一个奇怪的字符集问题,因为双反斜杠被解释为单斜线转义字符。 因此需要上面的四个斜杠。
同样,在大多数情况下, "(\\r\\n|\\n)"
应该可以工作,但是如果您的string来自基于Windows的源代码,请尝试上述方法。
只是一个“供参考”,想尽一切办法来纠正我正在取代那些行结尾的问题。 起初思考是从Windows-1252
转换到UTF-8
失败。 但是这也不起作用。 这个解决scheme是最后的诀窍。 🙂
这个对我有用。 Java代码就像你写的一样。 在testing仪中,inputstring应该是:
This is a string. This is a long string.
用真正的换行 你不能使用:
This is a string.\nThis is a long string.
…因为它将\n
视为字面序列反斜杠'n' 。
这应该是有效的,但不要自杀,试图弄清楚。 只要使用2遍。
str = str.replaceAll("(\r\n)", "<br />"); str = str.replaceAll("(\n)", "<br />");
免责声明:这不是非常有效。
这应该工作。 你需要两个斜线
str = str.replaceAll("(\\r\\n|\\n)", "<br />");
在这篇参考文献中 ,有一个例子显示
private final String REGEX = "\\d"; // a single digit
我在我的许多项目中使用了两个斜杠,似乎工作正常!