我正在尝试将JSON保存为多米诺骨牌文档。除处理富文本格式字段外,一切正常。问题是:我的html编辑器在每个html开始标记之后放置换行符和制表符,所以当我尝试获取保存该html的rtf时,它还包含换行符,制表符等。 我试过更换它们,但什么也没发生。
这是rtf的样子(并且不能改变):
<p>
some sample text</p>
这就是我试图从rtf获取数据的方式:
somestring = viewdata.getDocument().getMimeEntity("myField").getContentAsText();
我如何尝试替换换行符:
somestring.replaceAll("\n", "");
somestring.replaceAll("\\n", "");
somestring.replaceAll("\\\n", "");
我想得到像
这样的东西<p>some sample text</p>
我也尝试过jsonGenerator会为我做这个问题的方法。它返回json满/ t和/ n个字符。而且我还有一些jsonGenerator的问题,因为我的JSON有多个深度级别。因此,返回没有换行符和制表符的字符串可能是最简单的解决方案。
有谁知道如何解决这个问题?
答案 0 :(得分:3)
我可以想象可能涉及到一些事情。
我怀疑第一个是replaceAll
将字符串解释为正则表达式。在这种情况下,仅使用replace
更安全;尽管名称,它也替换了所有出现,但相反将内容视为文字字符串。
另一个可能是该字符串包含两个字符的Windows CRLF。我对此不太确定,但您也可以.replace("\r", "")
来确定。
最后,您是否将replace
调用的结果分配给String变量?它没有就地修改字符串,因此这是一个常见的陷阱。
另外,请注意您获取MIME RT字段内容的方式。当内容仅文本时,这将起作用,但是,当添加附件或嵌入图像时,MIME结构会更改,顶级会变为multipart/related
或multipart/mixed
实体,并且内容将移至儿童。寻找正文内容的最安全方法是对MIMEEntity
为getContentType()
且text
为getContentSubType()
的{{1}}进行深度优先递归搜索。