2017-10-05 65 views
-2

虽然我认为这样做会比较简单,因为对数组进行比较并不像预期的那样工作。它们只能与正则表达式进行比较。 这两个阵列的示例如下:比较两个数组:一个包含单词,另一个包含短语。有些是由这些词组成的,有些并非如此

第一个数组包含单词,如房子,猫,狗等。第二个字符串包含短语“我有房子”,“我有猫”。因此,关键是要看到载有短语

样本数组字的第二阵列中的什么话第一个数组的:{房子,狗,猫,男人,女孩,等}

样本数组短语: {“我有一所房子”,“我是一只狗”,“我的男人”等}

我已经通过这里

https://docs.ruby-lang.org/en/2.0.0/Array.html

文档中的所有排列方式去是不是要使用数组减法来查看差异,我们a不要谈论数字。这不是检查是否包含一些因为布尔不是对我的回答,而且,

我得到的坏的和奇怪的结果是,它打印出我充满第二个数组,如同从一切第一个阵列被包含在那里,情况并非如此。

我已经尝试了3个变体,每个,选择和。

注意:如果不是使用变量,我硬编码一个字符串,我知道它是第二个数组的一部分,它使我得到的结果很好。另外,如果我写了一个变量,并且手动赋值它,例如this:item = house,它们将它放入正则表达式的模式中,它也可以工作!所以问题似乎是某种程度上没有从第一个数组中提取项目,但事实并非如此,因为我试图打印它们,并且它们打印出来的效果很好。所以,如果他们从第一个数组正确提取,并且他们工作,如果我手动分配变量的值,为什么我不能自动分配值的变量,因为他们出来的第一个数组?这是让我疯狂的原因。目前为止已经有8个小

代码不长,只有4行,我已经包含了多种方法,我尝试过。 5实际上

TAKE一:

words= Array.new 
File.open('mtos-array.txt').each { |line| linesdb << line } 
phrases = Array.new 
File.open('out23.txt').each { |line| fcia << line } 

$x = 0 
for item in words do 
      for mto in phrases 
      if(mto =~/#{item}/)   
      puts"it is contained in #{mto}"     
      end 
      end 
     puts $x 
     $x +=1 

end 

TAKE二号

x = words.select {|num| num} 
     phrases.each {|a| 
      if(a =~/#{x}/)   
       puts"coincide com #{a}"     
      end 
} 

第三TAKE非常紧凑也不起作用。它将我打印出第二个数组(linesdb)。我本来想只打印如果x包含以V

x = words.select {|num| num} 
    puts(phrases.select {|v| v =~ /#{x}/})  

拿号4

这harcoded价值的作品,只是我需要的变量,而不是疯狂,但不能有他们的工作。为了使它更清晰:假设单词屋来自第一个数组,它确实找到了第二个数组中包含单词“house”的所有短语。

num = "house" 
phrases.each {|a| if(a =~/#{num}/)   
     puts"coincide en #{a}" 
    end 
} 

拿号5 再次它打印出我的全部第二阵列

for item in words do 
phrases.each {|a| if(a =~/#{item}/)   
      puts"it is contained in en #{a}" 
      end 
      } 
end 
+2

没有什么'fcia'的具体实例和'linesdb'遏制和你所期望的是输出,这是不可能回答的。 – Max

+0

第一个数组包含孤独的词,像家,猫,狗等。第二个字符串包含短语“我有房子”,“我有一只猫”。所以重点是要看看第一个数组中包含哪些词的第二个数组中包含这些词组。 – Arminius

+0

提出您的问题_explicit_例如'fcia = [“likke”,...]'包括一个预期的输出数组'output = [']' – Max

回答

0
words = ["house", "dog", "cat", "man", "girl"] 
phrases = ["I have a house", "I am a dog", "I am man"] 

words.select { |word| phrases.any? { |phrase| phrase.include? word } } 
#=> ["house", "dog", "man"] 
+0

@Arminius这适用于'''我家有','我是狗','我也是']''。 –

+0

如果我使用IRB它的作品。如果我使用ide,并从控制台运行,它不会给我正确的结果。我不知道为什么 – Arminius

相关问题