2010-10-15 70 views
0
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也应该给真

+0

我无法读取...请使用编辑问题http://stackoverflow.com/editing-help – Nakilon 2010-10-15 12:08:20

+0

而对您的问题也许答案是'放name.eql?(K [0] )' – Nakilon 2010-10-15 12:09:37

+1

如果你希望我们帮助你而不用猜测,请显示你的amit.txt文件内容! – ghostdog74 2010-10-15 12:25:53

回答

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

name的值是 “阿密特”。您正在检查字符串"amit"是否等于字符串"k[0]"。这不是,所以你得到错误。

你可能打算做的是name.eql?(k[0]),它将检查值k[0]是否为"amit"。但是,这仍然会返回错误,因为k[0]是“amit \ n”,而不是"amit"

若要解决此问题,您应该执行k << l.chomp而不是k << l以删除尾随的\n

+0

但我还给了k [0],并给出了我的文件内容是amits – 2010-10-15 12:11:54

+1

AMIT:你看不到'\ n'。你应该用'p'来代替。 – sepp2k 2010-10-15 12:14:18

+0

sepp2k我试着用k << l.chomp,但它给我错误 – 2010-10-15 12:16:44

0

您正在测试字符串"amit"而不是字符串"k[0]"。我想你可能想puts name.eql?(k[0])

+0

把name.eql?(k [0])也变成了false .. – 2010-10-15 12:10:08

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 
+0

都是徒劳的我试着用k << l.chomp但仍然得到false – 2010-10-15 12:21:18

+0

你为什么不在你的问题中显示你的amit.txt文件的内容!!? – ghostdog74 2010-10-15 12:25:15

+0

yaa确定我的amit.txt的内容是 – 2010-10-15 12:32:02

相关问题