用换句替换换行符和用<code> tags</code>换成空格

时间:2013-06-22 16:30:09

标签: java regex

我想用他们的同行替换换行符和空格,以便在我的Android应用程序中正确设置样式。

我想知道这个正则表达式的最佳方法。我试图用<br />替换换行符:

string.replaceAll("@<code>.*\\n*</code>@si", "<br />");

但它没有用。对于替换双倍空间,我无法想出任何东西。

所以这就是我想要实现的目标:

\n<br />,从“双未编码的空间”到&emsp;

1 个答案:

答案 0 :(得分:13)

在Java中,您可以在2次替换呼叫中执行此操作:

string = string.replaceAll("\\r?\\n", "<br />");
string = string.replace("  ", " &emsp;");

编辑:

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("  ", " &emsp;");
    m.appendReplacement(buf, grp);
}
m.appendTail(buf);
// buf.toString() is your replaced string

我故意在第二次调用中使用String#replace,因为我们并没有真正使用任何正则表达式。

同样在@amn发表评论时,您可以将字符串包装在<pre></pre>标记中,并避免这些替换。