对于几种语言,这已经被问了好几次了,但我不能让它工作。我有一个这样的字符串
String str = "This is a string.\nThis is a long string.";
我正在尝试用<br />
替换\n
,使用
str = str.replaceAll("(\r\n|\n)", "<br />");
但是\n
并没有被替换。我尝试使用这个RegEx Tool进行验证,我看到了同样的结果。输入字符串与"(\r\n|\n)"
不匹配。我做错了什么?
发布于 2010-06-17 04:18:08
您正在尝试的内容的更健壮的版本:
str = str.replaceAll("(\r\n|\n\r|\r|\n)", "<br />");
发布于 2012-08-21 19:00:41
发布于 2014-07-03 01:29:56
因为我的账号是新的,所以我不能支持尼诺·范胡夫的回答。如果字符串来自基于Windows的源,例如基于aspx的服务器,则此解决方案确实有效:
rawText.replaceAll("(\\\\r\\\\n|\\\\n)", "<br />");
这似乎是一个奇怪的字符集问题,因为双反斜杠被解释为单斜杠转义字符。因此需要使用上面的四个斜杠。
同样,在大多数情况下,"(\\r\\n|\\n)"
应该可以工作,但如果您的字符串来自基于Windows源,请尝试上面的方法。
仅供参考,我尝试了所有方法来解决我在替换那些行尾时遇到的问题。最初的想法是从Windows-1252
到UTF-8
的转换失败。但这也不起作用。这个解决方案就是最终成功的原因。:)
https://stackoverflow.com/questions/3056834
复制相似问题