ueditor字符串空格替换的问题

ueditor在线编辑器
placeholder image
admin 发布于:2018-05-18 14:00:41
阅读:loading

本站使用的ueditor编辑器,目前所有的内容存储的为html标签格式的数据,现在想专门再存储一下纯文本字段用于搜索使用,故有以下两种方式:

1)数据库存储的有纯文本,只不过只存储了250个字符长度的数据,将数据库长度扩充,去掉250个长度字符的限制,所有的数据均通过页面重新点击编辑保存,重新存储数据;

2)使用类似Jsoup等html解析组件将数据库存储的html标签数据解析,获取其纯文本后执行update;

显然第二种方式更靠谱,更是专业编码人员的首选,此为背景,在解析html的纯文本时发现文字内容前面有些许空白字符,想去除这些空白字符就有了本篇文章;

这些个空白字符串非常顽强,将它文字前面的空格给替换掉,发现死活替换不了,分别使用了String的replace、replaceAll的\s等正则与apache的StringUtils的deleteWhitespace、trim、strip等等发现均不好使,正当纳闷的时候突然想起来昨天看百度ueditor的getContextTxt函数(获取编辑器中内容的纯文本)的实现时用到了几个unicode编码字符的替换,将几个字符替换为空白,终于找到了解决的办法。

ueditor的获取纯文本的实现:

通过查看代码不难看出,它的获取纯文本的方式为根据浏览器类型获取其对应的innerText(textContent)文本,然后再使用两个replace替换,替换的数据参考如下图:

fillChar.png

getContenttTxt.png

换句话说,它在获取纯文本时除了innerText属性外关键还有Unicode字符的替换。

同时,在使用eclipse的显示空白字符功能,将这个空白显示一下,可以便于分析解决问题,但实际上发现它的空白并不完全是空格(空格只有2位),也不是tab和回车(这俩的空白字符下图都有显示),参考如下图所示:

空白显示.png

总结一下,后续如果再遇到一些空白死活去不掉的,可将其转换为char后转换为int,看看它的int类数字是多少去分析,这里的解决方案是:在字符串后加上上述的3个Unicode串的替换,比较简单了。


 点赞


 发表评论

当前回复:作者

 评论列表


留言区