2014-02-18 66 views
1

我有兩個包含設備序列號的csv文件。其中一個具有從設備直接掃描的正確序列號。另一份報告來自我們的庫存系統。我想交叉引用這兩個列表以查看兩個列表中的哪些項目,同時我想檢查可能的序列號匹配項。序列號的模式匹配算法

我將用java編程。

實施例1:

列表A序列號: 「AGJC-021645」

列表B序列號: 「AGJC-021645」

那將是完全匹配。但那個很容易。

實施例2:

列表A序列號: 「AGJC-01254」

由B可能的匹配: 「AGJC-01253」, 「AGJC-00254」,等等等等....

然後,我可以告訴我的庫存員工驗證它們。當他們進入系統時可能會出現輸入錯誤。

最糟糕的情況我不得不創建自己的模式匹配算法,但可能有一些庫已經這樣做了。

感謝

+0

一個Java實現,而且你試一下?你有一些代碼? –

+0

是的。我已經有一些java代碼可以讀取csv文件,並且可以讀取所有地圖或列表。我現在正在研究比較它們的最佳方法 –

+0

請添加您的Java代碼以查看您的方法並添加關於您想實現的更詳細的問題。 – CSchulz

回答

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

+0

這對我來說非常合適。謝謝! –