Вы можете сделать это. Я бы использовал String#chars
, который возвращает номера ASCII каждого символа в строке.
'abcdggg'.bytes
# => [97, 98, 99, 100, 103, 103, 103]
Как видите, алфавит последовательный, каждая буква на одну букву выше предыдущей. Вы можете получить его позицию в алфавите, взяв 96 из числа.
Обратите внимание, что заглавная буква находится в другой позиции, но мы можем исправить это, используя String#downcase
.
Чтобы получить все алфавитные позиции в строке (если она содержит только буквы), мы можем написать этот метод.
def alphabet_positions(string)
string.downcase.bytes.map{|b| b - 96}
end
Это будет работать неожиданно, если какие-либо символы не являются буквами, хотя.