Подтвердить что ты не робот

Сравнение двух строк в рубине

Я только начал изучать рубин, и это, вероятно, очень легко решить. Как сравнить две строки в 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

В конечном итоге это разные типы строк, как я могу сравнить эти два?

4b9b3361

Ответ 1

Из того, что вы напечатали, кажется, что 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"]

Ответ 2

Вот некоторые из них:

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

Метод космического корабля (<=>) может использоваться для сравнения двух строк в зависимости от их алфавитного ранжирования. Метод <= > возвращает 0, если строки идентичны, -1, если левая строка меньше правой строки, а 1, если она больше:

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

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

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

Нечувствительное к регистру сравнение может быть выполнено с использованием метода casecmp, который возвращает те же значения, что и метод <= > , описанный выше:

"Apples".casecmp "apples"
=> 0

Ответ 3

var1 - это регулярная строка, тогда как var2 - это массив, вот как вы должны сравнивать (в данном случае):

puts var1 == var2[0]

Ответ 4

Сравнение строк в Ruby очень просто:

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

Убедитесь, что ваш var2 не является массивом (что похоже на)