Arrays 检查元素是否属于Ruby中的数组

Arrays 检查元素是否属于Ruby中的数组,arrays,ruby,Arrays,Ruby,我试图弄清楚如何使用ruby检查元素是否属于数组。我从一个文件(比如demo.txt)中读取,该文件的每一行都有逗号分隔的对。我将这两对连接起来,并将其放入一个数组中。稍后我需要检查特定值是否属于数组。我可以看到数组已成功填充,但第二次检查未成功,即在数组中找不到元素。”我的demo.txt'如下所示 a, b c, d array = Array.new File.readlines('demo.txt').each do |line| line.slice! ", "

我试图弄清楚如何使用ruby检查元素是否属于数组。我从一个文件(比如demo.txt)中读取,该文件的每一行都有逗号分隔的对。我将这两对连接起来,并将其放入一个数组中。稍后我需要检查特定值是否属于数组。我可以看到数组已成功填充,但第二次检查未成功,即在数组中找不到元素。”我的demo.txt'如下所示

a, b
c, d
array = Array.new
File.readlines('demo.txt').each do |line|   
    line.slice! ", "
    array.push line
end
array.each do|d|
    puts d
end

if array.include? 'ab'
    puts "correct" #this is not printed
end 
ruby代码如下所示

a, b
c, d
array = Array.new
File.readlines('demo.txt').each do |line|   
    line.slice! ", "
    array.push line
end
array.each do|d|
    puts d
end

if array.include? 'ab'
    puts "correct" #this is not printed
end 

如何检查数组是否包含元素“ab”?

数组中有
ab\n

而不是

array.each do|d|
    puts d
end
使用inspect检查值

p array
#=> ["ab\n", "cd"]

要解决此问题,请在
行上使用
chomp

File.readlines('b.txt').each do |line|   
    line = line.chomp
    ...
end

数组中有
ab\n

而不是

array.each do|d|
    puts d
end
使用inspect检查值

p array
#=> ["ab\n", "cd"]

要解决此问题,请在
行上使用
chomp

File.readlines('b.txt').each do |line|   
    line = line.chomp
    ...
end
替换这个

if array.include? 'ab'
    puts "correct"
end 
用这个

if array.find 'ab'
    puts "correct"
end 
解决此问题。

替换此

if array.include? 'ab'
    puts "correct"
end 
用这个

if array.find 'ab'
    puts "correct"
end 

解决问题。

调试它。查看数组包含的内容您的问题是什么?打印数组时,它将元素显示为“ab”和“cd”。至于您的问题,
array.include?“ab'
就是这样做的。调试它。查看数组包含的内容您的问题是什么?打印数组时,它将元素显示为“ab”和“cd”。至于您的问题,
array.include?“ab'
就是这样做的。谢谢,现在我看到了问题。更好的做法是将chomp放在阅读行之后:
File.readlines('b.txt').map(&:chomp)。每个…
。谢谢,现在我看到了问题。更好的做法是将chomp放在阅读行之后:
File.readlines('b.txt').map(&:chomp).每个…
。谢谢。这确实有效。但我更喜欢@Wand Maker给出的答案,因为它会在将新行推到阵列之前剥离新行。谢谢。这确实有效。但我更喜欢@Wand Maker给出的答案,因为它会在将新行推到阵列之前剥离新行。