Сравнение двух строк в рубине
Я только начал изучать рубин, и это, вероятно, очень легко решить. Как сравнить две строки в 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
В конечном итоге это разные типы строк, как я могу сравнить эти два?
Ответы
Ответ 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 не является массивом (что похоже на)