k=[]
path="E:/expr/amit.txt"
name="amit"
File.open("amit.txt").each do |l|
k<< l
end
puts k[0]
puts name.eql?("k[0]")
O / P amit
假
为什么o / p包含false?它应该给出真实的
答案 0 :(得分:3)
name
的值是“amit”。您正在检查字符串"amit"
是否等于字符串"k[0]"
。它不是,所以你会变得虚假。
您可能要做的是name.eql?(k[0])
,它会检查值k[0]
是否为"amit"
。但是,这仍然会返回false,因为k[0]
是“amit \ n”,而不是"amit"
。
要解决此问题,您应该k << l.chomp
而不是k << l
删除尾随的\n
。
答案 1 :(得分:1)
在保存k
k=[]
name="amit"
File.foreach("file") do |line|
k<<line.chomp
end
p k.grep(name)
puts name.eql?(k[0])
输出
$ cat file
amit
submit
$ ruby test.rb
["amit"]
true
答案 2 :(得分:1)
如果您不确定自己的计划无效,.inspect
就是您的朋友。
k=[]
path="E:/expr/amit.txt"
name="amit"
File.open("amit.txt").each do |l|
puts "Debugging: l is #{l.inspect}"
k<< l
end
puts k[0]
puts name.eql?("k[0]")
puts "Debugging: name is #{name.inspect}, while k[0] is #{k[0].inspect}"
答案 3 :(得分:0)
您正在针对字符串"amit"
测试字符串"k[0]"
。我想你可能想要puts name.eql?(k[0])