我有两个csv文件,其中包含设备的序列号。其中一个具有从设备直接扫描的正确序列号。另一份报告来自我们的库存系统。我想交叉引用两个列表以查看两个列表中的哪些项目,同时我想检查序列号的可能匹配。
我将用java编程。
示例1:
列出序列号:“AGJC-021645”
清单B序列号:“AGJC-021645”
这将完全匹配。但那个很容易。
示例2:
列出序列号:“AGJC-01254”
列表B可能的匹配:“AGJC-01253”,“AGJC-00254”等......
然后我可以告诉我的库存人员验证它们。当他们进入系统时,可能是输入错误。
最糟糕的情况我必须创建自己的模式匹配算法,但可能有一些库已经这样做了。
由于
答案 0 :(得分:3)
我会使用Levenshtein距离http://en.wikipedia.org/wiki/Levenshtein_distance计算相似度,而不是进行模式匹配。
在信息理论和计算机科学中,Levenshtein距离是用于测量两个序列之间差异的字符串度量。非正式地,两个单词之间的Levenshtein距离是将一个单词改变为另一个单词所需的最小单字符编辑数(即插入,删除或替换)。短语编辑距离通常用于特指Levenshtein距离。它以弗拉基米尔·列文斯坦(Vladimir Levenshtein)命名,他在1965年考虑了这个距离。它与成对弦线对齐密切相关。
您可以在http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#Java
找到Java实施答案 1 :(得分:0)
您可以使用standard Java String pattern matching。您当然需要定义适合您序列号的RegEx。