我想用他们的同行替换换行符和空格,以便在我的Android应用程序中正确设置样式.
我想知道这个正则表达式的最佳方法.我试图用以下内容替换新行<br />:
string.replaceAll("@<code>.*\\n*</code>@si", "<br />");
Run Code Online (Sandbox Code Playgroud)
但它没有用.对于替换双倍空间,我无法想出任何东西.
所以这就是我想要实现的目标:
从\n到<br />,并从"双未编码的空间"  .
anu*_*ava 13
在Java中,您可以在2个替换调用中执行此操作:
string = string.replaceAll("\\r?\\n", "<br />");
string = string.replace(" ", "  ");
Run Code Online (Sandbox Code Playgroud)
Matcher m = Pattern.compile("(?s)(?i)(?<=<code>)(.+?)(?=</code>)").matcher(string);
StringBuffer buf = new StringBuffer();
while (m.find()) {
String grp = m.group(1).replaceAll("\\r?\\n", "<br />");
grp = grp.replace(" ", "  ");
m.appendReplacement(buf, grp);
}
m.appendTail(buf);
// buf.toString() is your replaced string
Run Code Online (Sandbox Code Playgroud)
我故意String#replace在第二次通话中使用,因为我们并没有真正使用任何正则表达式.
另外,作为@amn评论你可以用你的字符串<pre>和</pre>标签和避免这些替代品.