Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

【Ruby入門】文字列の基本と表示メソッドにて文字列の基本を説明しました。

引き続き、本記事では文字列の操作、具体的には文字列の編集や検索などを解説します。

プログラム中で適宜コメントを入れています。 「# ・・・」の箇所です。もちろん、動作をお試しになるときは書く必要はありません。

文字列の結合

+で文字列をつなげる

文字列をつなげるには、+を使います。

str1 = "abcde"
str2 = "fghij"
puts str1 + str2

[実行結果]

abcdefghij

+を使い、文字列の結合ができました。

concatや<<で文字列をつなげる

+とは別に、文字列をつなげる方法を解説します。concatと<<です。

str1 = "abcde"
str2 = "fghij"
puts str1.concat(str2)

[実行結果]

abcdefghij

concatを使い、文字列の結合ができました。次に、<<を試してみましょう。

str1 = "abcde"
str2 = "fghij"
puts str1 << str2

[実行結果]

abcdefghij

concatと<<の両方とも、同じように結合できました。

+とconcatや<<のちがい

+とconcatや<<とは動作が異なります。以下のプログラムを実行すれば一目瞭然です。結合後のstr1に注目してください。

まずは+からです。

str1 = "abcde"
str2 = "fghij"
puts str1 + str2
puts str1 # 結合後のstr1を確認
puts str2 # 結合後のstr2を確認

[実行結果]

abcdefghij
abcde
fghij

次に、<< です。concatでも動作は同じです。

str1 = "abcde"
str2 = "fghij"
puts str1 << str2
puts str1 # 結合後のstr1を確認
puts str2 # 結合後のstr2を確認

[実行結果]

abcdefghij
abcdefghij
fghij

お分かりでしょうか?str1の内容が変わっています。

+は文字を結合して新たに文字列を生成するので、結合前後で内容は変わりません。

concatや<<は、元の文字列に結合するので、結合後に内容が変わってしまいます。

用途に応じて使い分けてください。

文字列の比較

文字列の比較は、==や!=といった比較演算子で可能です。

puts "abc" == "abc"
puts "abc" == "def"
puts "abc" != "abc"
puts "abc" != "def"

[実行結果]

true
false
false
true

==または=!によって比較し、結果が論理値で表示されました。

文字列の検索

文字列中に対象とする文字列が含まれるどうかを調べる方法です。

単純に含まれるかどうかを知りたいときはinclude?を、左から何文字目かを知りたいときはindexを使います。

puts "abcdefg".include?("cde")
puts "abcdefg".include?("xyz")

[実行結果]

true
false

含まれていればtrue、含まれていなければfalseが表示されました。次はindexです。

puts "abcdefg".index("cde")
puts "abcdefg".index("xyz")

[実行結果]

2
(空白)

indexは、対象とする文字列に検索する文字列が含まれていないときはnilを返します。(もちろん実行すれば(空白)とは表示されず、何も表示されません)。

特定の文字列を削除する

対象とする文字列から、特定の文字列を消したいときはdeleteを使います。

puts "abcdefg".delete("cde")

[実行結果]

abfg

指定した文字列が消えました。

末尾の改行コードを削除する

末尾の改行コードを削除したいときはchompを使います。

それが何に役立つのか?と思われるかもしれません。具体例をあげてみましょう。

文字を入力しEnterすると文字列の長さを返す、というプログラムを考えます。入力した値を得るのはgets、文字列長はlengthを使います。

str = gets
puts str.length

実行すると入力待ち状態になるので、abcdeと入力してEnterします。

[実行結果]

6

・・・あれ?変ですね。5文字のはずが6と返ってきました。

実は、Enterしたときに文字列に改行コードが付加されて、「abcde + 改行コード」がstrに代入されるから6となります。

そこでchompを使います。

str = gets.chomp
puts str.length

[実行結果]

5

今度は大丈夫です。5と返ってきました。

特定の位置から文字列を切り出す

先頭何文字目から何文字を切り出す、というのは開発現場ではよく出てきます。そんなときは、配列と同様にインデックスを指定します。

str = "AbCdEF"
puts str[1]    # 2文字目だけ切り出す
puts str[1,3] # 2文字目から4文字切り出す

[実行結果]

b
bCd

配列のインデックスと同じ考えなので、1を指定すると2文字目になりますので注意してください。

その他の文字列を操作するメソッド

文字列を操作するとても便利なメソッドを、順番に解説します。解説する3つのメソッドはすべて破壊的メソッドを持ちます。

破壊的メソッドとは、中身を書き換えてしまうメソッドです。詳しくは「最初はこれだけ!まずは手を動かしたい人のRuby入門」を確認してください。

逆順にするreverse

reverseは文字列の並びを逆順にします。

str = "abcdefg"
puts str.reverse

[実行結果]

gfedcba

すべて大文字にするupcase

upcaseは、文字列をすべて大文字に変換します。

str = "AbCdEF"
puts str.upcase

[実行結果]

ABCDEF

すべて小文字にするdowncase

downcaseは、文字列をすべて小文字に変換します。

str = “AbCdEF"
puts str.downcase

[実行結果]

abcdef

小文字と大文字を逆転させるswapcase

もちろん、大文字と小文字を反転させるメソッドもあります。swapcaseです。

str = "AbCdEF"
puts str.swapcase

[実行結果]

abcdef

まとめ

文字列の操作を解説しましたが、いかがでしたか?

他言語でできることは、Rubyでも一通りそろっていることがお分かりいただけたと思います。

ご自身でも何度も試して、ぜひ習得してくださいね!

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。