代码之家  ›  专栏  ›  技术社区  ›  Amit Singh Tomar

为什么这个字符串比较会在ruby中给出这个结果?

  •  0
  • Amit Singh Tomar  · 技术社区  · 14 年前
    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包含false??它应该是真的

    4 回复  |  直到 14 年前
        1
  •  1
  •   Andrew Grimm atk    14 年前

    如果你不确定你的程序为什么不能工作, .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}"
    
        2
  •  3
  •   sepp2k    14 年前

    价值 name "amit" 等于字符串 "k[0]" . 不是的,所以你会弄错的。

    name.eql?(k[0]) ,它将检查 k[0] “阿米特” k[0] “阿米特” .

    要解决这个问题,你应该 k << l.chomp k << l 去掉拖尾 \n .

        3
  •  1
  •   ghostdog74    14 年前

    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
    
        4
  •  0
  •   Chowlett    14 年前

    你在测试绳子 "amit" "k[0]" . 我想你可能想 puts name.eql?(k[0])