Как я могу получить первый символ в строке с помощью Ruby?
В конечном счете то, что я делаю, берет чью-то фамилию и просто создает начальную букву из нее.
Таким образом, если строкой был "Smith", я просто хочу "S".
Вы можете использовать открытые классы Ruby, чтобы сделать ваш код более читабельным. Например, это:
class String
def initial
self[0,1]
end
end
позволит вам использовать метод initial
для любой строки. Итак, если у вас есть следующие переменные:
last_name = "Smith"
first_name = "John"
Тогда вы можете получить инициалы очень четко и читабельно:
puts first_name.initial # prints J
puts last_name.initial # prints S
Другой метод, упомянутый здесь, не работает в Ruby 1.8 (не то чтобы вы все равно должны были использовать 1.8! - но когда этот ответ был опубликован, он все еще был довольно распространен):
puts 'Smith'[0] # prints 83
Конечно, если вы не делаете это регулярно, тогда определение метода может быть излишним, и вы можете просто сделать это напрямую:
puts last_name[0,1]
Если вы используете последнюю версию Ruby (1.9.0 или новее), следующее должно работать:
'Smith'[0] # => 'S'
Если вы используете 1.9.0+ или 1.8.7, следующее должно работать:
'Smith'.chars.first # => 'S'
Если вы используйте версию старше 1.8.7, это должно работать:
'Smith'.split(//).first # => 'S'
Обратите внимание, что 'Smith' [0,1]
не работает на 1.8, он не будет не даст вам первый символ, он даст вам только первый байт .
"Smith"[0..0]
работает как в Ruby 1.8, так и в Ruby 1.9.
Из-за раздражающего выбора дизайна в Ruby до 1.9 - some_string [0]
возвращает код символа из первый символ - наиболее переносимый способ записать это - some_string [0,1]
, который указывает ему получить подстроку с индексом 0 длиной в 1 символ.