示例匹配:紅寶石 - 如果在數組元素部分地與元件與另一個元件陣列
array1 = ["budget2017.doc", "accounting2017.doc", "mydogisdumb.doc"]
array2 = ["budget.doc", "accounting.doc", "imstupid.doc"]
我想兩個陣列比較了相似性和從array1
返回相關聯的元件。
array1.select { |x| x.include?(array2) }
我需要的結果是一個新的陣列["budget2017.doc", "accounting2017.doc"]
但顯然上述不會工作,因爲"budget.doc"
不與"budget2017.doc"
匹配。如果我可以匹配每個元素的前幾個字符並返回array1
中的相關元素,我就可以完成所需的工作。
您想要運行的邏輯是,對於array1中的每個元素X1,遍歷array2中的所有元素,以及array2中的每個元素X2,如果X1與X2匹配,則將其添加到結果中。你可以用'=〜'運算符來使用正則表達式搜索(x1 =〜x2 iirc)。 – Vall3y
這裏有確切的模式嗎?如果是前兩個,你可以刪除數字。但對於後者,你有一些混合。在一般情況下,您可以使用Levenstein或Jaro-Winkler距離等字符串相似度算法。你能否澄清一下考慮抽象匹配兩個字符串需要什麼? – ndn
ndn - 每個數組中將有數百個文件名,數組1中的文件名將與數組2中的文件名具有相同的開始,但在擴展之前將包含一些額外的字符。如果每個文件名的前幾個字符都相同,我只對匹配感興趣。 – Sean