比较ruby中的两个字符串

我刚开始学习ruby,这可能很容易解决。 如何在Ruby中比较两个字符串?

我尝试过以下方法:

puts var1 == var2 //false, should be true (I think) puts var1.eql?(var2) //false, should be true (I think) 

当我尝试将它们回显到控制台以便我可以直观地比较值时,我这样做:

 puts var1 //prints "test content" without quotes puts var2 //prints ["test content"] with quotes and braces 

最终这些不同类型的字符串如何比较这两个?

从您打印的内容来看,似乎var2是一个包含一个字符串的数组。 或者实际上,它似乎保持在包含一个字符串的数组上运行.inspect的结果。 展示如何初始化它们会很有帮助。

 irb(main):005:0* v1 = "test" => "test" irb(main):006:0> v2 = ["test"] => ["test"] irb(main):007:0> v3 = v2.inspect => "[\"test\"]" irb(main):008:0> puts v1,v2,v3 test test ["test"] 

这里有一些:

 "Ali".eql? "Ali" => true 

太空船( <=> )方法可用于比较两个字符串与其字母排名的关系。 如果字符串相同,则<=>方法返回0;如果左手字符串小于右手字符串,则返回-1;如果更大,则返回1:

 "Apples" <=> "Apples" => 0 "Apples" <=> "Pears" => -1 "Pears" <=> "Apples" => 1 

可以使用casecmp方法执行不区分大小写的比较,该方法返回与上述<=>方法相同的值:

 "Apples".casecmp "apples" => 0 

var1是一个常规字符串,而var2是一个数组,这是你应该比较的方式(在这种情况下):

 puts var1 == var2[0] 

在Ruby中,字符串的比较非常简单:

 v1 = "string1" v2 = "string2" puts v1 == v2 # prints false puts "hello"=="there" # prints false v1 = "string2" puts v1 == v2 # prints true 

确保你的var2不是一个数组(看起来像)