Пока строки имеют одинаковую кодировку, сравнение байтов было бы элегантным решением без необходимости дополнительного экранирования.
str.bytes == other.bytes
Чтобы отобразить обратную косую черту, вы просто экранируете ее с помощью одной обратной косой черты:
puts '\\'
\
Дополнительно, в зависимости от вашего точного использования, можно использовать оператор <=>
:
(str <=> other).zero?
РЕДАКТИРОВАТЬ
Чтобы немного расширитьболее того, есть разница в том, что отображается для вас, если вы только что сделали что-то вроде этого:
a = '\\'
p a
=> '\\'
Это покажет себя как две обратные косые черты, но на самом деле это все ещеодин символ, а не два.
a = '\\'
a.bytes
=> [92] # ASCII code for a backslash (single byte)