这已被多次询问几种语言,但我无法让它工作。我有一个这样的字符串
String str = "This is a string.\nThis is a long string.";
我正在尝试\n
用<br />
using替换
str = str.replaceAll("(\r\n|\n)", "<br />");
但\n
没有被替换。我尝试使用这个RegEx Tool进行验证,我看到了相同的结果。输入字符串与 不匹配"(\r\n|\n)"
。我究竟做错了什么 ?
这已被多次询问几种语言,但我无法让它工作。我有一个这样的字符串
String str = "This is a string.\nThis is a long string.";
我正在尝试\n
用<br />
using替换
str = str.replaceAll("(\r\n|\n)", "<br />");
但\n
没有被替换。我尝试使用这个RegEx Tool进行验证,我看到了相同的结果。输入字符串与 不匹配"(\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);
}
}
结果:
这是一个字符串。<br />这是一个长字符串。
你的问题在别的地方。
您正在尝试的更强大的版本:
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 的源,请尝试上述方法。
仅供参考,我尝试了一切来纠正我替换这些行尾的问题。起初以为是从Windows-1252
to转换失败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
我在我的许多项目中使用了两个斜线,它似乎工作正常!