Как я могу получить первый символ в строке с помощью Ruby?
В конечном итоге то, что я делаю, - это взять кому-то фамилию и просто создать из нее начальную.
Итак, если строка была "Смит", мне просто нужно "S".
Как я могу получить первый символ в строке с помощью Ruby?
В конечном итоге то, что я делаю, - это взять кому-то фамилию и просто создать из нее начальную.
Итак, если строка была "Смит", мне просто нужно "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]
работает как в рубине 1.8, так и в ruby 1.9.
В МРТ 1.8.7 и выше:
'foobarbaz'.each_char.first
Для полноты, так как Ruby 1.9 String # chr возвращает первый символ строки. Его по-прежнему доступны в версиях 2.0 и 2.1.
"Smith".chr #=> "S"
В Rails
name = 'Smith'
name.first
>> s = 'Smith'
=> "Smith"
>> s[0]
=> "S"
Попробуйте следующее:
>> a = "Smith"
>> a[0]
=> "S"
ИЛИ
>> "Smith".chr
#=> "S"
Из-за раздражающего выбора дизайна в Ruby до версии 1.9 - some_string[0]
возвращается код символа первого символа - самый переносимый способ записать это some_string[0,1]
, который сообщает ему, чтобы получить подстрока с индексом 0, длиной 1 символ.
Любой из этих методов будет работать:
name = 'Smith'
puts name.[0..0] # => S
puts name.[0] # => S
puts name.[0,1] # => S
puts name.[0].chr # => S