45

私はルビーを学び始めたばかりで、これはおそらく非常に簡単に解決できます。Rubyで2つの文字列を比較するにはどうすればよいですか?

私は以下を試しました:

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

最終的に、これらの異なるタイプの文字列は、これら2つをどのように比較するのですか?

4

4 に答える 4

107

ここにあるいくつかの:

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

宇宙船(<=>)メソッドを使用して、アルファベット順のランキングに関連して2つの文字列を比較できます。<=>メソッドは、文字列が同一の場合は0を返し、左側の文字列が右側の文字列よりも小さい場合は-1を返し、大きい場合は1を返します。

"Apples" <=> "Apples"
=> 0

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

"Pears" <=> "Apples"
=> 1

大文字と小文字を区別しない比較は、上記の<=>メソッドと同じ値を返すcasecmpメソッドを使用して実行できます。

"Apples".casecmp "apples"
=> 0
于 2012-12-11T16:45:04.267 に答える
7

印刷したものから、var21つの文字列を含む配列のようです。または、実際には、.inspect1つの文字列を含む配列で実行した結果を保持しているように見えます。それらをどのように初期化しているかを示すと役立ちます。

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"]
于 2012-12-11T16:36:16.990 に答える
7

var1は通常の文字列ですvar2が、は配列ですが、これを比較する方法です(この場合)。

puts var1 == var2[0]
于 2012-12-11T16:36:28.227 に答える
6

文字列の比較はRubyでは非常に簡単です。

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

var2が配列ではないことを確認してください(次のように見えます)

于 2012-12-11T16:36:41.450 に答える