将换行符替换为<br/>和空格用&emsp; 在<code>标签内

tol*_*gap 7 java regex

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

我想知道这个正则表达式的最佳方法.我试图用以下内容替换新行<br />:

string.replaceAll("@<code>.*\\n*</code>@si", "<br />");
Run Code Online (Sandbox Code Playgroud)

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

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

\n<br />,并从"双未编码的空间" &emsp;.

anu*_*ava 13

在Java中,您可以在2个替换调用中执行此操作:

string = string.replaceAll("\\r?\\n", "<br />");
string = string.replace("  ", " &emsp;");
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("  ", " &emsp;");
    m.appendReplacement(buf, grp);
}
m.appendTail(buf);
// buf.toString() is your replaced string
Run Code Online (Sandbox Code Playgroud)

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

另外,作为@amn评论你可以用你的字符串<pre></pre>标签和避免这些替代品.

  • 哦,我以为你想删除代码标签.这就是为什么我没有抓住它.让我做一个编辑. (2认同)