原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任。
[深蓝的blog]:http://blog.youkuaiyun.com/huangyanlong/article/details/49318855
【背景】
某部委项目,获取到某采集端某类数据,需配合开发完成数据的抽取、清洗工作。其中有一类字典类字段,由于采集端数据问题,对于字典类的数据内容出现大量问题数据需要清洗,把字典值翻译成中文名称提供给开发使用,举个例子如下:
假设字典列表如下:
遇到问题1:如何进行翻译?
把A1翻译成“消防车”,把B1翻译成“警车”,把C1翻译成“大货车”。
遇到问题2:如何将翻译后结果更美观易读?
将翻译后结果由“消防车,警车,大货车,”转换成“消防车,警车,大货车”,即去掉翻译后的最后一个逗号。
【解决】
解决1:利用笨方法:replace翻译;
由于本次需翻译字典项不多,考虑到编写函数的繁琐性,于是想利用一个replace的笨方法来解决,起初担心效率问题,但实践后发现用replace套了19层后,转换效率上还可以接受。
解决2:利用substr和instr函数;
因为利用replace简单翻译时,加入了逗号进行类别间的分割,这样将在最后出现一个多余的逗号。需要利用instr查询出最后一个逗号所在的位数,然后再利用substr截取到倒数第二位即可。
弊端:
如果不写函数的话,实现问题1和问题2时,将发起两次replace转换,成本变