今天我尝试使用lib作为jericho-html-3.2从简单的html中提取文本。。。我遇到了一个奇怪的文本假长度问题,如下所示:
如果我有html作为这个
Hello World :)<br><br>Hello World :(<br><br>Hello World ;)<br>
我的RichTextArea getText().length()
返回42,这实际上是正确的长度,但当我试图用之类的代码从该html中提取文本时
Source source = new Source(html);
String text = source.getTextExtractor().toString();
text.length()
返回44
所以我不明白为什么长度42的文本会变成长度44,以及如何修复它?
感谢
仅为44,您需要将所有
标签分别视为一个字符,空格分别视为1个字符,所有笑脸分别视为2个字符。
H(1)e(2)l(3)l(4)o(5) (6)W(7)o(8)r(9)l(10)d(11) (12):)(13)<br>(14)<br>(15)H(16)e(17)l(18)l(19)o(20) (21)W(22)o(23)r(24)l(25)d(26) (27:((28)<br>(29)<br>(30)H(31)e(32)l(33)l(34)o(35) (36)W(37)o(38)r(39)l(40)d(41) (42);)(43)<br>(44)
我不得不更深入地挖掘它,我认为html换行符的文本长度是错误的,因为jericho html解析器出于某种原因用空格或其他东西替换了新的换行符。。。
就目前而言,我还不能确定它会将哪些标签替换为哪些字符,但就我的情况而言,我只是尝试使用这样的正则表达式进行一些漫游(见片段)
html=html.replaceAll("<br>","");
Source source = new Source(html);
String text = source.getTextExtractor().toString();
所以现在它真的将原始文本长度返回为42:)
我希望小费能节省一天
感谢大家的帮助