Rubyがミニツク

あなたのRubyの技術に関するより詳しい知識と理解を増やします。

Ruby入門コース

このコースについて

Rubyのeラーニング研修システムはRailsを使ってWebアプリケーション開発ができる技術者の育成を目指します。 そのため、Railsを扱うことができるだけのRubyの知識を得ることがRuby入門コースの目標となっています。

コンテンツ一覧

ヒント レッスンの名前をクリックすると、その内容を表示します。

次のコンテンツ ホームへ戻る

Stringクラスのメソッド

+メソッド

+メソッドとはStringクラスに定義されている+演算子のメソッドのことです。+演算子を使うことによって、複数の文字列オブジェクトを連結して新しい文字列オブジェクトを作ることができます。

str = "Ruby " + " on " + " Rails"
p str  #=> "Ruby on Rails"

<<メソッド

<<メソッドを使うことによって、文字列オブジェクトに異なる文字列オブジェクトを文末に入れて新しい文字列オブジェクトを作ることができます。
引数に複数の文字列オブジェクトを指定することはできません。

foo = "foo"
foo << "bar"
p foo  #=> foobar

concatメソッド

concatメソッドを使うことによって、レシーバに指定した文字列オブジェクトの文末に引数で指定した文字列オブジェクトを入れて新しい文字列オブジェクトを作ることができます。
引数に複数の文字列オブジェクトを指定することはできません。

foo = "foo"
foo.concat("bar")
p foo  #=> foobar

+メソッドは複数のオブジェクトを連結して新しいオブジェクトを作って返します。<<メソッドやconcatメソッドはレシーバに指定した文字列オブジェクトを変更することによって、結果的に新しい文字列オブジェクトが作られます。
そのため、元の文字列オブジェクトの値を変えたくない時は+メソッドを使うといいでしょう。<<メソッドやconcatメソッドは元の文字列オブジェクトの値を変更してもよい時に使うとよいでしょう。

sizeメソッド

レシーバに指定した文字列オブジェクトのバイト数を返します。たとえば"foo"という文字列に対してsizeメソッドが返してくる数値は3です。
一方、"日本語Ruby"という文字列に対してsizeメソッドが返してくる数値は7ではなく10になります(Shift_JISの場合)。
これは、Shift_JISの文字コードでは、日本語の部分が実際には1文字当たり2バイトで表現されているためです。
このような文字をマルチバイト文字と呼び、文字コードの種類によって1文字を何バイトで表わすかは異なります。
例えば、UTF-8においては、1文字当たり3バイトで表わされるため、前述の"日本語Ruby"に対してsizeメソッドを実行すると、13という数値が返ってきます。

p "ruby".size  #=> 4

lengthメソッド

sizeメソッドはlengthメソッドの別名です。
そのため、lengthメソッドもsizeメソッドと同じようにレシーバに指定した文字列オブジェクトの文字数を返します。

p "ruby".length  #=> 4

empty?メソッド

レシーバに指定した文字列オブジェクトが空文字列なのかを判定します。空文字列とは文字列リテラルの「""」や「’’」のことです。empty?メソッドは空文字列の時はtrueを返し、何か文字がある時はfalseを返します。

p "".empty?      #=> true
p "ruby".empty?  #=> false

[]メソッド、[]=メソッド

文字列オブジェクトは[]メソッドを使うことによって、先頭から文末までの文字に対応したインデックスを指定して文字を参照できます。正の符号を持ったインデックスは先頭から文末までの文字数以上を指定した時はnilが返ってきます。インデックスは負の符号を持ったインデックスでも指定することができます。ただし、文末から先頭までの文字数以上の負の符号を持ったインデックスを指定すると例外が発生します。

foo = "foo"
p foo[0].chr  #=> f
foo[0] = "p"
p foo         #=> poo

インデックスは範囲を指定することもできます。

foo = "foo"
p foo[1..2].chr  #=> oo
foo[1..2] = "uu"
p foo            #=> fuu

他にもインデックスではなくて正規表現を[]メソッドの引数として使うこともできます。

str = "Enjoy, Programming!"
p str[/Enjoy/]  #=> Enjoy
str[/Programming/] = "Ruby"
p str           #=> Enjoy, Ruby!

splitメソッド

レシーバに指定した文字列オブジェクトを、引数に指定した文字列を規則にして分割した配列を返します。splitメソッドは任意の文字列を区切り文字として、レシーバの文字列オブジェクトを分割します。
また、区切り文字のことをデリミタとも呼びます。

str = "foo, bar, baz"
ary = str.split(",")
p ary  #=> ["foo", "bar", "baz"]

chompメソッド

レシーバの文字列オブジェクトの末尾に行区切り文字がある場合、それを削除します。
削除対象は文字列の末尾のみであり、文字列の途中にある行区切り文字に対しては何も行いません。
デフォルトでは改行文字が行区切りの文字として解釈されます。その場合、\r・\r\n・\nのどれもが行区切りの文字として解釈して削除します。
デフォルト以外の行区切りの文字を削除したい時は、引数に行区切りの文字を指定することで削除できます。もし引数にnilを指定した時は、chompメソッドは何もおこないません。

str = "foo\nbar\nbaz\n"
p str        #=> "foo\nbar\nbaz\n"
p str.chomp  #=> "foo\nbar\nbaz"
str = <<EOS
a
b
c
d
e
EOS
p str.each {|i| print i.chomp }

upcaseメソッド

レシーバに指定した文字列オブジェクトのアルファベットを大文字に変換します。

str = "ruby is object-oriented programming language."
p str.upcase  #=> RUBY IS OBJECT-ORIENTED PROGRAMMING LANGUAGE.

downcaseメソッド

レシーバに指定した文字列オブジェクトのアルファベットを小文字に変換します。

str = " RUBY IS OBJECT-ORIENTED PROGRAMMING LANGUAGE."
p str.downcase  #=> ruby is object-oriented programming language.

capitalizeメソッド

レシーバに指定した文字列オブジェクトのアルファベットの先頭を大文字にして、先頭以外を小文字にします。

str = <<EOS
RUBY
IS
OBJECT-ORIENTED
PROGRAMMING
LANGUAGE.
EOS
str.each {|i| puts i.capitalize }

swapcaseメソッド

レシーバに指定した文字列オブジェクトのアルファベットを大文字を小文字へ、小文字を大文字に変換します。

str = "RUBY is object-oriented programming LANGUAGE."
p str.swapcase  #=> ruby IS OBJECT-ORIENTED PROGRAMMING language.


次のコンテンツ ホームへ戻る