Bal*_*a R 65 java regex replaceall
有几种语言曾多次询问过这种情况,但我无法使用它.我有这样的字符串
String str = "This is a string.\nThis is a long string.";
Run Code Online (Sandbox Code Playgroud)
而且我想,以取代\n与<br />使用
str = str.replaceAll("(\r\n|\n)", "<br />");
Run Code Online (Sandbox Code Playgroud)
但是\n没有被取代.我尝试使用此RegEx工具进行验证,我看到相同的结果.输入字符串没有匹配项"(\r\n|\n)".我究竟做错了什么 ?
Mar*_*ers 114
这个对我有用.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
This is a string.<br />This is a long string.
你的问题出在其他地方.
Dol*_*lph 19
你正在尝试的更强大的版本:
str = str.replaceAll("(\r\n|\n\r|\r|\n)", "<br />");
Run Code Online (Sandbox Code Playgroud)
Nin*_*off 17
对我来说,这工作:
rawText.replaceAll("(\\\\r\\\\n|\\\\n)", "\\\n");
Run Code Online (Sandbox Code Playgroud)
提示:使用正则表达式测试程序进行快速测试,无需在您的环境中进行编译
由于我的帐户是新的,我无法对Nino van Hooff的回答进行投票.如果您的字符串来自基于Windows的源,例如基于aspx的服务器,则此解决方案可以正常工作:
rawText.replaceAll("(\\\\r\\\\n|\\\\n)", "<br />");
Run Code Online (Sandbox Code Playgroud)
似乎是一个奇怪的字符集问题,因为双反斜杠被解释为单斜杠转义字符.因此需要上面的四倍斜线.
同样,在大多数情况下"(\\r\\n|\\n)"应该可以工作,但如果您的字符串来自基于Windows的源,请尝试以上操作.
只是一个FYI尝试了一切来纠正我正在替换那些行结尾的问题.首先想到的是从失败的转换Windows-1252到UTF-8.但那也没有奏效.这个解决方案终于成功了.:)
| 归档时间: |
|
| 查看次数: |
129502 次 |
| 最近记录: |