replaceAll()函数

| 分类 Java  | 标签 replaceAll 

昨天线上出了一个bug,通过日志分析找了出来。我大概描述一下bug吧。

广告形式有文字链、图片、flash等,当是文字链时,内容一般是中文。所以,当管理端添加一个文字链广告时,一般是纯文字,比如:

飘柔,就是这么自信!

但是,有的客户给的内容是这样的:

“热血”传奇,你的另一个战斗天堂

就是它的广告内容本身带有双引号,那么,JAVA通过JSON放入数据库时,会转码+处理特殊字符,所以,存入数据库应该是:

"热血"传奇,你的另一个战斗天堂

因为这个广告内容需要发送给其他程序处理,所以需要把它转换成JSON。原来项目中使用的是replaceAll()函数,但是仅仅考虑了纯文本,如果像上面就会出现replace错误。因为数据库中只有5条这样的数据,所以以前没注意到。

经过分析,发现涉及到的知识只有两点:

  • 双引号
  • 正则表达式

其中双引号这类的可以归结为meta,在《shell十三问》中就为shell的meta纠结了好久,没想到JAVA也有meta。。。伤不起。而正则表达式就比较常见了,语法啥的也基本相同。解决方法也很简单,对数据库中的双引号再处理一次即可。


上一篇     下一篇