[英]replace \n and \r\n with <br /> in java
有几种语言曾多次询问过这种情况,但我无法使用它。 我有这样的字符串
String str = "This is a string.\nThis is a long string.";
而我正试图用<br />
取代\\n
str = str.replaceAll("(\r\n|\n)", "<br />");
但是\\n
没有被取代。 我尝试使用此RegEx工具进行验证,我看到相同的结果。 输入字符串与"(\\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);
}
}
结果:
This is a string.<br />This is a long string.
你的问题在别的地方。
你正在尝试的更强大的版本:
str = str.replaceAll("(\r\n|\n\r|\r|\n)", "<br />");
由于我的帐户是新的,我无法对Nino van Hooff的回答进行投票。 如果您的字符串来自基于Windows的源,例如基于aspx的服务器,则此解决方案可以正常工作:
rawText.replaceAll("(\\\\r\\\\n|\\\\n)", "<br />");
似乎是一个奇怪的字符集问题,因为双反斜杠被解释为单斜杠转义字符。 因此需要上面的四倍斜线。
同样,在大多数情况下"(\\\\r\\\\n|\\\\n)"
应该可以正常工作,但如果您的字符串来自基于Windows的源,请尝试以上操作。
只是一个FYI尝试了一切来纠正我正在替换那些行结尾的问题。 首先想到的是从Windows-1252
到UTF-8
转换失败。 但那也没有奏效。 这个解决方案终于成功了。 :)
这个对我有用。 Java代码与您编写的完全一样。 在测试器中,输入字符串应为:
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
我在我的许多项目中使用了两个斜线,它似乎工作正常!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.