将\n和\r\n替换为< br />在Java中

31moq8wy  于 2023-06-28  发布在  Java
关注(0)|答案(7)|浏览(180)

这已经被问了好几次几种语言,但我不能得到它的工作。我有一根这样的弦

String str = "This is a string.\nThis is a long string.";

我尝试使用以下命令将\n替换为<br />

str = str.replaceAll("(\r\n|\n)", "<br />");

但是\n没有被替换。我试着用这个RegEx Tool来验证,我看到了同样的结果。输入字符串不匹配"(\r\n|\n)"。我做错了什么?

flmtquvp

flmtquvp1#

对我很有效。

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.

你的问题在别的地方。

z6psavjg

z6psavjg2#

对我来说,这起作用了:

rawText.replaceAll("(\\\\r\\\\n|\\\\n)", "\\\n");

提示:使用regex tester进行快速测试,而无需在环境中进行编译

wfypjpf4

wfypjpf43#

一个更强大的版本,你正在尝试:

str = str.replaceAll("(\r\n|\n\r|\r|\n)", "<br />");
kgsdhlau

kgsdhlau4#

因为我的帐户是新的,我不能投赞成票尼诺范胡夫的答案。如果您的字符串来自基于Windows的源,例如基于aspx的服务器,则此解决方案确实有效:

rawText.replaceAll("(\\\\r\\\\n|\\\\n)", "<br />");

似乎是一个奇怪的字符集问题,因为双反斜杠被解释为单斜杠转义字符。因此需要上面的四个斜杠。
同样,在大多数情况下,"(\\r\\n|\\n)"应该可以工作,但如果您的字符串来自基于Windows的源代码,请尝试上述方法。
只是一个fyi尝试一切,以纠正问题,我有取代那些行结束。最初认为从Windows-1252UTF-8的转换失败。但那也没用。这个解决方案最终成功了。:)

mwyxok5s

mwyxok5s5#

对我很有效。Java代码完全按照您编写的那样工作。在测试仪中,输入字符串应为:

This is a string.
This is a long string.

...用真实的的换行您不能用途:

This is a string.\nThis is a long string.

...因为它将\n视为文字序列 * 反斜杠'n'*。

ffvjumwh

ffvjumwh6#

这应该可以,但不要杀了你自己试图找出它。只需使用2个通道。

str  = str.replaceAll("(\r\n)", "<br />");
str  = str.replaceAll("(\n)", "<br />");

免责声明:这不是很有效。

beq87vna

beq87vna7#

这个应该能用你需要加两个斜线

str = str.replaceAll("(\\r\\n|\\n)", "<br />");

在此Reference中,有一个示例显示

private final String REGEX = "\\d"; // a single digit

我在我的许多项目中使用过两个斜杠,它似乎工作得很好!

相关问题