2016-10-19 133 views
0

時驗證是否包含在字符串的子串,我有兩個數據集比較遠元素

example1 = ["og", "phan"] 
example2 = ["dog", "cat", "elephant", "chicken", "snake"] 

我需要退換,確切地說,是含example1只有元素,如果他們串的新數組example2中的任何元素,它們也應該包括在中,它們以與它們呈現的順序相同的順序

我設法讓下面的代碼工作,但新的數組返回不同的順序(元素如["phan", "og"]代替["og", "phan"]

r = [] 
array1.map { |x| r.push(x) if array2.join(" ").include?(x) } 
r.flatten 

超:我發現include?不一樣,如果你的工作比較對數組數組時使用它,換句話說,它沒有找到一個單一的數組元素的字符串中的子串,除非它是完全一樣的。

+1

當我嘗試你的代碼時,順序是正確的。簽出並運行:https://repl.it/EA98/0 – roychri

+0

確實,但我最後遺漏了排序方法,這就是爲什麼它沒有以正確的順序返回數組。 – Leo

回答

2

我會做這樣的事情

example1.select { |syllable| example2.any? { |word| word.include? syllable } } 
+0

它比一個音節更多的是一個子字符串。 – Stefan

+0

是的,我不知道如何命名它。 – Ursus

+0

它的工作原理。謝謝。我忘了提及函數不起作用,因爲它需要按照字典順序返回,簡單地通過調用排序 – Leo