2010-10-15 68 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

相關問題