Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将换行符替换为<;br/>;及设有&;emsp;内部<;代码>;标签_Java_Regex - Fatal编程技术网

Java 将换行符替换为<;br/>;及设有&;emsp;内部<;代码>;标签

Java 将换行符替换为<;br/>;及设有&;emsp;内部<;代码>;标签,java,regex,Java,Regex,我想用相应的换行符和空格来替换它们,以便在我的android应用程序中正确设置它们的样式 我想知道这个正则表达式的最佳方法。我试图用替换换行符: string.replaceAll("@<code>.*\\n*</code>@si", "<br />"); 但它不起作用。对于双空间替换,我还没有想出任何办法 这就是我想要实现的目标: 从\n到,从“双未编码空间”到&emsp在Java中,您可以通过两个replace调用完成此操作: string = stri

我想用相应的换行符和空格来替换它们,以便在我的android应用程序中正确设置它们的样式

我想知道这个正则表达式的最佳方法。我试图用

替换换行符:

string.replaceAll("@<code>.*\\n*</code>@si", "<br />");
但它不起作用。对于双空间替换,我还没有想出任何办法

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


\n

,从“双未编码空间”到
&emsp

在Java中,您可以通过两个replace调用完成此操作:

string = string.replaceAll("\\r?\\n", "<br />");
string = string.replace("  ", " &emsp;");
我特意在第二次调用中使用了
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("  ", " &emsp;");
    m.appendReplacement(buf, grp);
}
m.appendTail(buf);
// buf.toString() is your replaced string