例の要素と一致する場合:私は類似性のための2つの配列を比較しarray1
から関連する要素を戻したいルビー - 配列内の要素の一部が別の配列
array1 = ["budget2017.doc", "accounting2017.doc", "mydogisdumb.doc"]
array2 = ["budget.doc", "accounting.doc", "imstupid.doc"]
。 "budget.doc"
が"budget2017.doc"
と一致していないので、私は上記明らかに結果が["budget2017.doc", "accounting2017.doc"]
で新しい配列する必要がしかし
array1.select { |x| x.include?(array2) }
は動作しません。各要素の最初の数文字と一致させ、関連する要素をarray1
から戻すことができれば、私が必要とするものを達成することができます。
実行するロジックは、array1の各要素X1に対して、array2のすべての要素を繰り返し処理します。配列2の各要素X2は、X1がX2と一致する場合は結果に追加します。 '=〜'演算子(x1 =〜x2 iirc)で正規表現検索を使うことができます。 – Vall3y
ここに正確なパターンはありますか?最初の2つの場合は、数字だけを削除できます。しかし、後者の場合、あなたは少しミックスしています。一般的なケースでは、LevensteinやJaro-Winkler距離のような文字列類似アルゴリズムを使用できます。抽象的に一致する2つの文字列を検討するために必要なことを明確にすることができますか? – ndn
ndn - 各配列には何百ものファイル名がありますが、array1のファイル名はarray2のファイル名と同じ始まりになりますが、拡張子の前にいくつかの余分な文字が入ります。各ファイル名の最初の数文字が同じであれば、私は試合に興味があります。 – Sean