我刚开始学习红宝石,这可能很容易解决.如何比较Ruby中的两个字符串?
我尝试过以下方法:
puts var1 == var2 //false, should be true (I think)
puts var1.eql?(var2) //false, should be true (I think)
Run Code Online (Sandbox Code Playgroud)
当我尝试将它们回显到控制台以便我可以直观地比较值时,我这样做:
puts var1 //prints "test content" without quotes
puts var2 //prints ["test content"] with quotes and braces
Run Code Online (Sandbox Code Playgroud)
最终这些不同类型的字符串如何比较这两个?
tok*_*khi 97
这里有一些:
"Ali".eql? "Ali"
=> true
Run Code Online (Sandbox Code Playgroud)
spaceship(<=>)方法可用于比较两个字符串与其字母排名的关系.如果字符串相同,则<=>方法返回0;如果左手字符串小于右手字符串,则返回-1;如果更大,则返回1:
"Apples" <=> "Apples"
=> 0
"Apples" <=> "Pears"
=> -1
"Pears" <=> "Apples"
=> 1
Run Code Online (Sandbox Code Playgroud)
可以使用casecmp方法执行不区分大小写的比较,该方法返回与上述<=>方法相同的值:
"Apples".casecmp "apples"
=> 0
Run Code Online (Sandbox Code Playgroud)
从您打印的内容来看,它似乎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"]
Run Code Online (Sandbox Code Playgroud)
var1是一个常规字符串,而是var2一个数组,这是你应该比较的方式(在这种情况下):
puts var1 == var2[0]
Run Code Online (Sandbox Code Playgroud)
在Ruby中,字符串的比较非常简单:
v1 = "string1"
v2 = "string2"
puts v1 == v2 # prints false
puts "hello"=="there" # prints false
v1 = "string2"
puts v1 == v2 # prints true
Run Code Online (Sandbox Code Playgroud)
确保你的var2不是一个数组(看起来像)