一般富文本的功能会有些样式,存储到数据库表里面之后会带上一大堆的标签和样式,底层如果要对这些进行翻译的话会变得非常困难,因为我们要翻译的只是里面的中文内容,这就面临第一个问题,把中文取出来,如果把这个当成一道题,大致会有集中方案:
1、遍历整个内容,判断连续的中文文段,收集起来,
2、利用正则表达式, 获取出特定标签内的内容。
以上两种方式都会面临一个问题,内容取不全,翻译就会不完整,因为不确定正文是否包含正则内的内容。
还有就是代码不好写,要处理各种边界逻辑。
我有一种办法,代码仅需十几行,
首先富文本内容都有一个特点,就是前端能转换成html解析,所以,我们把内容转换成我们能看到的结构,在代码中就是转换成html结构的对象,那什么工具能实现这种效果呢?
JSOUP
废话不多说:
转换成Document对象之后里面的标签都会被解析成该对象的节点,有个类型就是存储的正文内容:TextNode
拿到这个节点之后就能拿到文案内容了。
一个递归即可解决
这样之后termList就是整个富文本中的非标签内容,将其翻译之后在替换回来就完美解决了