web-dev-qa-db-ja.com

Ruby:文字列の最初の文字を取得する方法

Rubyを使用して文字列の最初の文字を取得するにはどうすればよいですか?

最終的に私がやっていることは、誰かの姓を取り、それからイニシャルを作成することです。

したがって、文字列が「Smith」だった場合、「S」だけが必要です。

106
Shpigford

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] 
121
iconoclast

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 =。

96
Jörg W Mittag
"Smith"[0..0]

Ruby 1.8とRuby 1.9の両方で動作します。

29
Andrew Grimm

完全を期すために、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

21
Brandon

MRI 1.8.7以降の場合:

'foobarbaz'.each_char.first
14
Wayne Conrad

Railsで

name = 'Smith'
name.first 
11
Suganya

これを試して:

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

または

>> "Smith".chr
#=> "S"
8
Gagan Gami
>> s = 'Smith'                                                          
=> "Smith"                                                              
>> s[0]                                                                 
=> "S"                                                        
5
SilentGhost

1.9より前のRubyでの迷惑なデザイン選択により、some_string[0]は最初の文字の文字コードを返します—これを記述する最も移植性の高い方法はsome_string[0,1]です。インデックス0の1文字の部分文字列。

2
Chuck

まだ言及されていない別のオプション:

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

これらの方法のいずれかが機能します。

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