前段时间,我在公司接到一项任务,大概功能需求模型如下:比如给一系列字符串,其中包含地区的行政代码、机器ID、机器类型ID、操作人员编号ID等大部分都是一连串的数字。这些信息使用“-”或者“/”分割开,但是这些信息出现的前后顺序是不一定的。
刚领到任务,我连jcesg是什么都没听说过。后来大概看了看有点明白了,尤其是看了jcseg的官方文档N多遍之后。下面我谈谈我的实现思路:
Step1:把各个属性正确切割出来。jcseg里面定义了一个wordstop的词典,可以在里面定义分词的标识符。在项目启动后自动加载wordstop词典,然后我们就可以正确切割字符串。这里需要注意的一点是:分词后要避免jcseg自动二次分词,在properties文件中有个属性可以关闭二次分词。
Step2:遍历分词后的结果,并且依次加载自定义的词典进行匹配。
原理介绍完了,下面举个例子来说明一下过程:
比如有一串字符串信息:110000-machineA-OperatorB。
第一步:通过分词取得三个词:110000、machineA、OperatorB。
第二步:遍历上述分词结果,匹配词典:
110000对应行政代码词典里面的北京市行政区代码。所有上述字符串附加属性有:行政区:北京市。
machineA对应机器词典里面的机器A代码。所有上述字符串附加属性有:机器:机器A。
OperatorB对应操作员词典里面的张三代码。所有上述字符串附加属性有:操作人:张三。
以上就是整个使用jcseg解析字符串数据信息的过程。