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]
はnot 1.8で動作し、notは最初の文字を与え、最初の文字のみを与えることに注意してくださいbyte =。
"Smith"[0..0]
Ruby 1.8とRuby 1.9の両方で動作します。
完全を期すために、Ruby 1.9 String#chrは文字列の最初の文字を返すため、 2.0および2.1でも利用可能です。
"Smith".chr #=> "S"
MRI 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"
1.9より前のRubyでの迷惑なデザイン選択により、some_string[0]
は最初の文字の文字コードを返します—これを記述する最も移植性の高い方法はsome_string[0,1]
です。インデックス0の1文字の部分文字列。
まだ言及されていない別のオプション:
> "Smith".slice(0)
#=> "S"
これらの方法のいずれかが機能します。
name = 'Smith'
puts name.[0..0] # => S
puts name.[0] # => S
puts name.[0,1] # => S
puts name.[0].chr # => S