将break和分节符转换为java中的新行
基本上我有一个带有
和
的HTML片段。 我能够删除所有HTML标记,但这样做会使文本格式不正确。
除了反转输入和输出之外,我想在PHP中使用像nl2br()
这样的东西,并且还考虑
标签。 Java中是否有一个库?
您基本上需要将每个
替换为\n
,将每个
替换为\n\n
。 因此,在您成功删除它们的位置,您需要分别插入\n
和\n\n
。
这是在Jsoup HTML解析器的帮助下的一个启动示例(HTML示例是故意编写的,因此如果不是几乎不可能使用正则表达式那么很难)。
public static void main(String[] args) throws Exception { String originalHtml = "p1l1
p1l2
p2l1
p2l2
"; String text = br2nl(originalHtml); String newHtml = nl2br(text); System.out.println("-------------"); System.out.println(text); System.out.println("-------------"); System.out.println(newHtml); } public static String br2nl(String html) { Document document = Jsoup.parse(html); document.select("br").append("\\n"); document.select("p").prepend("\\n\\n"); return document.text().replace("\\n", "\n"); } public static String nl2br(String text) { return text.replace("\n\n", "").replace("\n", "
"); }
(注意: replaceAll()
是不必要的,因为我们只想要一个简单的charsequence-by-charsequence替换,而不是regexpattern-by-charsequence replacement)
输出:
p1l1
p1l2
p2l1
p2l2
------------- p1l1 p1l2 p2l1 p2l2 ------------- p1l1
p1l2
p2l1
p2l2
有点hacky,但它的工作原理。
br2nl
和p2nl
并不太复杂。 尝试一下:
String plain = htmlText.replaceAll("
","\\n").replaceAll("","\\n\\n").replaceAll("
","");
你应该能够使用replaceAll。 有关示例,请参见http://www.rgagnon.com/javadetails/java-0454.html 。 其中只有2个,一个用于p,一个用于br。 示例是另一种方式,但您可以更改它以使用斜杠n替换html