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