2016-10-19 134 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