Java 将换行符替换为<;br/>;及设有&;emsp;内部<;代码>;标签
我想用相应的换行符和空格来替换它们,以便在我的android应用程序中正确设置它们的样式 我想知道这个正则表达式的最佳方法。我试图用Java 将换行符替换为<;br/>;及设有&;emsp;内部<;代码>;标签,java,regex,Java,Regex,我想用相应的换行符和空格来替换它们,以便在我的android应用程序中正确设置它们的样式 我想知道这个正则表达式的最佳方法。我试图用替换换行符: string.replaceAll("@<code>.*\\n*</code>@si", "<br />"); 但它不起作用。对于双空间替换,我还没有想出任何办法 这就是我想要实现的目标: 从\n到,从“双未编码空间”到&emsp在Java中,您可以通过两个replace调用完成此操作: string = stri
替换换行符:
string.replaceAll("@<code>.*\\n*</code>@si", "<br />");
但它不起作用。对于双空间替换,我还没有想出任何办法
这就是我想要实现的目标:
从
\n
到
,从“双未编码空间”到&emsp代码>在Java中,您可以通过两个replace调用完成此操作:
string = string.replaceAll("\\r?\\n", "<br />");
string = string.replace(" ", "  ");
我特意在第二次调用中使用了String#replace
,因为我们实际上没有使用任何正则表达式
另外,正如@amn所评论的,您可以将字符串包装在
和
标记中,避免这些替换。您不能只使用PRE
标记吗?这就是它的用途。你可以尝试Apache Commons Lang库,如这里所述:@amn这是用于Android Textview的,不支持pre
标记。我需要正则表达式只作用于标记,而不是整个字符串。好的,现在试试。如果您可以提供输入字符串的示例值,这将有所帮助。这是可行的,但有一个问题。我丢失了字符串中的
标记。是什么原因造成的?哦,我以为你想去掉代码标签。这就是为什么我没有抓住它。让我来编辑一下。
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