• WebCamp_インタビュー
    “未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
    2017.10.04
  • WebCampPro_インタビュー
    未経験31歳からエンジニア転職を実現【実際に聞いてみた】
    2017.04.01
  • WebCampPro_インタビュー
    自分で稼ぐ力をつけるため、新卒5年目の営業マンがエンジニアに転職!【WebCampPro転職者インタビュー】
    2018.02.02
  • WebCampPro_インタビュー
    未経験から上京し、エンジニアとしてチームラボグループに転職!【WebCampPro卒業生インタビュー】
    2018.03.10
  • WebCamp_インタビュー
    【卒業生インタビュー】台湾で月間100万UUの訪日旅行メディアを手掛けるCEOが、プログラミングを学んで得たものとは?
    2018.01.15
  • WebCamp_インタビュー
    「自信の持てるスキルを得たい!」内定辞退した女子大生がプログラミングを学習したワケ。
    2018.04.28
  • WebCamp_インタビュー
    時間や場所にとらわれず自由に働くために必要なスキルとは?【WebCamp卒業生インタビュー】
    2018.01.26
  • WebCamp_インタビュー
    【WebCamp受講生インタビュー】起業準備中にCEOが気がついたプログラミングスキルの重要性とは?
    2017.12.25
  • WebCamp_インタビュー
    「1カ月頑張ればこの先が見えてくる」地元メディアを立ち上げたママさん
    2017.07.20
  • WebCampPro_インタビュー
    未経験でも寿司職人からWebデザイナーになった!ホスピタリティでスクールを支える宮脇トレーナー
    2017.05.26
  • WebCamp_インタビュー
    【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
    2018.01.15

◆当サイトで人気のプログラミング教室のおすすめランキングはこちら!
プログラミングは独学では非効率で、時間を無駄にするリスクがあります。効率的なカリキュラムで学べるスクールを受講しましょう。

Web Camp【マンツーマンサポート】1ヶ月短期集中でプログラミングを学ぶスクール
1ヶ月通い放題・メンター常駐の教室環境でWebサービス等作りたい方
TechAcademyオンラインで開講しているプログラミングスクール
オンラインでどこでも学べる!/教室に行くのが忙しい人でも安心!
Tech Camp教養としてのITスキルを学べるスクール
Webデザイン/AI(人工知能)/IOS/Androidアプリ制作/VRを学びたい方!
WebCampPro転職保証付き!エンジニアとして転職したい人におすすめ!
未経験からプロのエンジニアを3ヶ月で目指すプログラミングスクールです。
9月生募集中!当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
8月受入枠は満員となっております。9月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!

文字列を扱うStringクラスは、多彩なメソッドが搭載されており、とても便利なクラスです。

そのため、いろいろなサイトや参考書でメソッドの説明を中心に数多く説明されています。

しかし、改めてStringクラスそのもの、特にStringクラスが持っている文字列についての説明は意外に多くありません。

そこで、今回は、Stringクラスが持っている文字列について、詳しく解説します。

Stringクラスとは

Stringクラスは、文字列を扱う標準クラスです。

明示的なnewメソッドを使用することなく、""や''で文字列を定義すると、自動的にその文字列はStringクラスとして解釈されます。

他のプログラム言語が持つ文字列操作の機能のほとんどすべてを持っており、より改善されたメソッドになっているのが特長です。

保持できる文字列の長さには、メモリ容量的な点以外に制限はありません。

エンコーディングを持っている

一般的なスクリプト言語では、エンコーディングはファイルの先頭に「magic comment」と呼ばれる文を挿入することで行います。

Rubyでも、基本的にはそれは踏襲されており、次のようなmagic commentをファイルの先頭に記載することで、エンコーディングを設定できます。(EUC-JPの場合)

# coding: 

※スクリプトエンコーディングを指定しなければ、Ruby実行時の指定(-Kオプション)や、設定に従います(初期はUS-ASCII)

なお、magic commentを使って、そのファイルで扱うエンコーディングを指定できます(スクリプトエンコーディング)

しかし、Stringクラスもオブジェクト自身がエンコーディングを保持しています。

初期値は、オブジェクト生成時のエンコーディングですが、以下のencodeメソッドで変更、encodingメソッドで参照ができます。

# coding: utf-8

str = "てすと"
p("#{str} code        :#{str.encoding}")
p("#{str} changed code:#{str.encode("Shift_JIS").encoding}")

(結果)

"てすと code        :UTF-8"
"てすと changed code:Shift_JIS"

※エンコーディングは環境によって初期設定や対応状況に差があります。上記はWindowsでの結果ですので、Macでの実行している場合は、Shift-JISではなく、EUC-JPなどで試してみましょう。

コツコツ独学×スクールで実践。未経験からエンジニアに転職!【WebCamp卒業生インタビュー】
2018-03-22 23:28
今回の記事では、独学でPHPを1年半学習し、その後WebCampを受講して未経験からエンジニアへと転職された佐々木さんにお話を伺いました。 <プロフィール> 佐々木 祐樹 さん(2...

リテラル文字列

リテラル文字列というのは、""や''で囲まれた文字列のことです。また、%q()や%Q()という表現方法もあります。

Stringオブジェクトは、主にこのリテラル文字列を使用することで生成されます。

ただし、リテラル文字列には""(ダブルクォート)で囲まれたものと、''(シングルクォート)で囲まれたものの2種類があり、それぞれ動作が違っていますので、注意が必要です。

種類 説明
""(ダブルクォート) 文字列の中に\が含まれていた場合、エスケープシーケンスとして\の次の文字と組み合わせた特殊記号として解釈され、相応の動作を行います
''(シングルクォート) \'と\\以外のエスケープシーケンスを無視して、ただの文字として扱います
%q() ()の中に文字列を記載します。
""(ダブルクォート)と同じです
%Q() ()の中に文字列を記載します。
''(シングルクォート)と同じです

つまり、改行やタブ文字などの表示されないような特殊文字を使用するのであれば、""でなければいけないわけです。

エスケープシーケンス

エスケープシーケンスは「\」とそれに続く文字で表される特殊文字で、改行や改ページ、タブ文字などを表しています。文字列を扱ううえで、頻繁ではありませんが使うことが少なくはありませんので、代表的なエスケープシーケンスを紹介しておきましょう。

記号 表現される文字 文字コード
\t タブ 0x09
\v 垂直タブ 0x0b
\n 改行 0x0a
\r キャリッジリターン 0x0d
\f 改ページ 0x0c
\b バックスペース 0x08
\a ベル 0x07
\e エスケープ 0x1b
\s 空白 0x20
\nnn 8進数表記(nは0から7) -
\xnn 16進数表記(nは0から9,aからf) -
\cx
\C-x
コントロール文字(xはASCII文字) -
\M-x メタ x (c | 0x80) -
\M-\C-x メタ コントロール x -
\x 文字xそのもの -
\unnnn Unicode文字(nは0から9,aからf,AからF、16進数4桁で指定) -
\u{nnnn} Unicode文字列(nは0から9,aからf,AからF、nnnnは16進数で1桁から6桁まで指定可能)
スペースかタブ区切りで複数のUnicode文字を指定できます。例:"\u{30eb 30d3 30fc a}" # => "ルビー\n"
-
\改行 文字列中に改行を含めずに改行します -

中には聞きなれないものもあるかもしれませんが、今の段階では「そういうものもある」と考えていただいて問題ありません。必要になったときに、確認していきましょう。

“未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
2017-10-04 10:26
今回の記事では、未経験からWebCampを1ヶ月受講し、その後エンジニアとして転職をした喜田さんにお話を伺いました。 <プロフィール> 喜田 大介 さん (28歳) 大学時代はプ...

展開記法

展開記法というのは、文字列の中に式を埋め込むことができる記述手法です。

展開記法を使えば、手軽に変数の内容やメソッドの戻り値を表示することができますので、プログラミングを進めていく中で頻繁に使っていくことになるでしょう。

ぜひ、今の段階でマスターしておきたいテクニックです。

展開記法の構文

展開記法は、ダブルクォートで囲まれた文字列や正規表現の中で以下の記載をすることで利用することができます。

#{式}

式には、数式だけではなく変数やメソッド、オブジェクトなどを記載することができます。

すでに上で紹介したプログラムで使用していますが、改めて動きを確認しましょう。

a = 10
b = 5

str = "展開記法"

p("#{a} + #{b} = #{a+b}")
p("#{str}の文字数;#{str.length}")

(結果)

"10 + 5 = 15"
"展開記法の文字数;4"

+で連結するのと何が違う?

じつは、展開記法を使わなくても、文字列を連結する「+メソッド」を使えば同じ動作を実現できます。

a = 10
b = 5

str = "展開記法"

p(a.to_s + " + " + b.to_s + " = " + (a + b).to_s)
p(str + "の文字数;" + str.length.to_s)

もちろん、ある程度好みの問題もありますが、展開記法には以下のようなメリットがありますので、展開記法を使用する方が良いでしょう。

・to_sメソッドを記載する必要がないため、プログラムコードが読みやすい
・to_sメソッドを持たないオブジェクトでも利用できる
・もし変数がnilだった場合でも、問題なく使用できる(+メソッドではエラーになる場合がある)

なお、展開記法は正規表現の中でも使用できますので、応用範囲はとても広いと言えます。

時間や場所にとらわれず自由に働くために必要なスキルとは?【WebCamp卒業生インタビュー】
2018-01-26 13:03
今回の記事では、WebCampに1ヶ月間通い、未経験からエンジニアとして転職した星野さんにお話を伺いました。 <プロフィール> 星野 智洋 さん(25) 学生時代は日本大学芸術学部...

ヒアドキュメント

すでに説明したリテラル文字列の一種に、「ヒアドキュメント」と呼ばれる文字列があります。

Rubyのヒアドキュメントは、(エスケープシーケンスではない)改行を含む文字列を扱うことができますので、通常のリテラル文字列に比べて長文を扱う場合などに使い勝手が良くなるでしょう。

構文

ヒアドキュメントは、任意の「識別子」で文字列を挟むことで、挟まれた文字列すべて(空白や改行を含むすべて)を文字列として定義できます。

構文は以下です。

<<識別子
文字列
識別子

識別子は一般的に大文字英数字で作られた文字列で、同じ文字列で挟むことで、ヒアドキュメントを定義します。

なお、識別子の前に「-」「~」を記載すると文字列の扱いが違ってきますので、まとめておきます。

種類 説明
識別子のみ 識別子に挟まれたすべての文字列(空白も改行も含む)をひとかたまりの文字列して定義できます。
最後の識別子は必ず行頭から始まる必要があります
-識別子 最後の識別子にインデントを付けることができます。あとは識別子のみの場合と同じです
~識別子 -識別子と同様の機能に加えて、文字列の行頭にある空白をインデントとみなして無視してくれます

実際の動作を確認しましょう

それぞれ実際に動かして確認してみましょう。

標準的なヒアドキュメント

def here_doc
  a = 10

  str = <<TEST_DOC
  標準的なヒアドキュメントです。
    改行も空白もすべてそのまま反映されます。

  a = #{a}
TEST_DOC
end

puts(here_doc)

(結果)

"  標準的なヒアドキュメントです。
    改行も空白もすべてそのまま反映されます。

  a = 10"

最後の識別子を行頭から記載しなければ、エラーが発生します。注意してください。

「-」を付けたもの

一覧にも記載していますが、「-」を識別子の前に付けることで、最後の識別子のインデントを合わせてもエラーがでなくなります。

def here_doc
  a = 10

  str = <<-TEST_DOC
  識別子のインデントを合わせたヒアドキュメントです。
    改行も空白もすべてそのまま反映されます。

  a = #{a}
  TEST_DOC
end

puts(here_doc)

(結果)

"  識別子のインデントを合わせたヒアドキュメントです。
    改行も空白もすべてそのまま反映されます。

  a = 10"

文字列の前の空白はインデントとする

ヒアドキュメントは識別子に挟まれた部分すべてを文字列としますが、読みやすくするためにインデントを入れると、それも文字列の一部として扱われます。インデントについては無視したい場合は「~」を使用します。

def here_doc
  a = 10

  str = <<~TEST_DOC
  インデントを無視した部分を文字列とするヒアドキュメントです。
    行頭の空白のインデントと同じ文字数までは削除されています。

  a = #{a}
  TEST_DOC
end

puts(here_doc)

(結果)

"インデントを無視した部分を文字列とするヒアドキュメントです。
  行頭の空白のインデントと同じ文字数までは削除されています。

a = 10"

まとめ

Stringクラス、文字列について、詳しく解説しました。

Stringクラスや文字列といえば、とかくエンコードやメソッドの話が多くなりますが、ベースとなるリテラル文字列にも種類があり、それを理解しておかなければ思わぬ動作の違いに悩むことがあります。

逆に、文字列をしっかり理解した後にメソッドを使えば、思ったよりもしっくりと理解することができることでしょう。


・Stringクラスは、リテラル文字列を定義することでオブジェクトが生成される
・リテラル文字列には、""(ダブルクォート)と''(シングルクォート)がある
・""(ダブルクォート)は、エスケープシーケンスや展開記法が有効になる
・展開記法を使えば、変数や式を文字列の中に埋め込める
・改行を含んだ長文をプログラムの中に埋め込むにはヒアドキュメントが便利

WebCamp・WebCamp Proについて

WebCampは1ヶ月でプログラミング・Webデザインスキルを学ぶ通い放題のプログラミングスクールです。WebCamp Proは3ヶ月間で未経験から即戦力エンジニアを育成するプログラミングスクールです。

2つのサービスを運営するインフラトップでは、「学びと仕事を通して人生を最高の物語にする」という理念で会社を経営しています。

キャリアアップを目指す方は、この機会に私達と一緒にプログラミングを学んでみませんか?

8月枠も残りわずか当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
7月受入枠は満員となっております。8月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!

▼未経験から1ヶ月でWebデザイン・プログラミングを学びたい方はこちら!

▼ついに開講!オンラインでWebデザインを学びたい方はこちら!

 

【インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!

ブラジルから帰国し技術をつけようとRubyエンジニアを目指してWebCampでRubyを学び、見事Webエンジニアとして転職を果たした田中さんにお話を伺いました。

Rubyの学習がしたい。基礎をしっかりと理解したい

転職のサポートがほしい

と考えている方はぜひお読み下さい。

【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
2018-01-15 13:23
今回の記事では、WebCampで1ヶ月間Rubyを学習し、Webエンジニアとして転職した卒業生の田中さんにお話を伺いました。 <プロフィール> 田中 デニス 昭彦さん(...
関連キーワード
Rubyの関連記事
  • 【Ruby入門説明書】ruby sliceについて解説
  • 【Ruby入門説明書】chompについて解説
  • 【Ruby入門説明書】selectについて解説
  • 【Ruby入門説明書】matchについて解説
  • 【Ruby入門説明書】リファレンス、sortについて解説
  • 【Ruby入門説明書】リファレンス、moduleについて解説

当サイトで人気のオススメ転職サービスTOP3

1位 マイナビエージェント×IT

おすすめポイント

・平日忙しい人も、土曜日開催の個別キャリア相談会に参加できる

・職種や仕事内容(要件定義、上流工程から携わる仕事など)の要望が細かくできる
・マイナビの規模を活かした豊富で幅広い求人数

マイナビエージェント×ITの登録はこちら

2位 レバテックキャリア

おすすめポイント

・求人登録数4,000件以上

・エンジニア未経験、経験者両方に対応

・有名企業の採用担当者インタビューがみれる

・一次面接NGからの内定実績もあるほど、内定率が高い

レバテックキャリアの登録はこちら

 3位 type転職エージェント

おすすめポイント

転職者の71%が年収アップ

・IT系企業、特にエンジニアに限らず営業職の求人も充実している

各職種専門の転職アドバイザーが援助

type転職エージェントの登録はこちら

おすすめの記事