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 阿米特为什么这个字符串比较在ruby中给出了这个结果?
假
为什么含O假/ P 25也应该给真
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 阿米特为什么这个字符串比较在ruby中给出了这个结果?
假
为什么含O假/ P 25也应该给真
如果你不知道为什么你的程序不能正常工作之前,.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}"
name
的值是 “阿密特”。您正在检查字符串"amit"
是否等于字符串"k[0]"
。这不是,所以你得到错误。
你可能打算做的是name.eql?(k[0])
,它将检查值k[0]
是否为"amit"
。但是,这仍然会返回错误,因为k[0]
是“amit \ n”,而不是"amit"
。
若要解决此问题,您应该执行k << l.chomp
而不是k << l
以删除尾随的\n
。
但我还给了k [0],并给出了我的文件内容是amits – 2010-10-15 12:11:54
AMIT:你看不到'\ n'。你应该用'p'来代替。 – sepp2k 2010-10-15 12:14:18
sepp2k我试着用k << l.chomp,但它给我错误 – 2010-10-15 12:16:44
您正在测试字符串"amit"
而不是字符串"k[0]"
。我想你可能想puts name.eql?(k[0])
把name.eql?(k [0])也变成了false .. – 2010-10-15 12:10:08
尝试做格格保存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
都是徒劳的我试着用k << l.chomp但仍然得到false – 2010-10-15 12:21:18
你为什么不在你的问题中显示你的amit.txt文件的内容!!? – ghostdog74 2010-10-15 12:25:15
yaa确定我的amit.txt的内容是 – 2010-10-15 12:32:02
我无法读取...请使用编辑问题http://stackoverflow.com/editing-help – Nakilon 2010-10-15 12:08:20
而对您的问题也许答案是'放name.eql?(K [0] )' – Nakilon 2010-10-15 12:09:37
如果你希望我们帮助你而不用猜测,请显示你的amit.txt文件内容! – ghostdog74 2010-10-15 12:25:53