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, это будет не дайте вам первый символ, он даст вам только первый байт.
для полноты картины, так как Ruby 1.9 String#chr возвращает первый символ строки. Его по-прежнему доступны в 2.0 и 2.1.
"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
Comments