2017-10-05 60 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

相關問題