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



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



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



Так что если строка была " Смит "я просто хочу"S".

576   11  

11 ответов:

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

для полноты картины, так как 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

в МРТ 1.8.7 или выше:

'foobarbaz'.each_char.first

В Rails

name = 'Smith'
name.first 

попробуйте это:

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

или

>> "Smith".chr
#=> "S"
>> s = 'Smith'                                                          
=> "Smith"                                                              
>> s[0]                                                                 
=> "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

еще один вариант, который еще не был упомянут:

> "Smith".slice(0)
#=> "S"

Comments

    Ничего не найдено.