Ruby: Как получить первый символ строки

Как я могу получить первый символ в строке с помощью Ruby?

В конечном итоге то, что я делаю, - это взять кому-то фамилию и просто создать из нее начальную.

Итак, если строка была "Смит", мне просто нужно "S".

Ответ 1

Вы можете использовать открытые классы 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] 

Ответ 2

Если вы используете последнюю версию 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, он не даст вам первого символа, он даст вам первый байт.

Ответ 3

"Smith"[0..0]

работает как в рубине 1.8, так и в ruby ​​1.9.

Ответ 4

В МРТ 1.8.7 и выше:

'foobarbaz'.each_char.first

Ответ 5

Для полноты, так как Ruby 1.9 String # chr возвращает первый символ строки. Его по-прежнему доступны в версиях 2.0 и 2.1.

"Smith".chr    #=> "S"

http://ruby-doc.org/core-1.9.3/String.html#method-i-chr

Ответ 6

В Rails

name = 'Smith'
name.first 

Ответ 7

>> s = 'Smith'                                                          
=> "Smith"                                                              
>> s[0]                                                                 
=> "S"                                                        

Ответ 8

Попробуйте следующее:

>> a = "Smith"
>> a[0]
=> "S"

ИЛИ

>> "Smith".chr
#=> "S"

Ответ 9

Из-за раздражающего выбора дизайна в Ruby до версии 1.9 - some_string[0] возвращается код символа первого символа - самый переносимый способ записать это some_string[0,1], который сообщает ему, чтобы получить подстрока с индексом 0, длиной 1 символ.

Ответ 10

Любой из этих методов будет работать:

name = 'Smith'
puts name.[0..0] # => S
puts name.[0] # => S
puts name.[0,1] # => S
puts name.[0].chr # => S