【3日目:Rubyの文字列とか。。。】改訂3版基礎Ruby on Railsをさらに読み進めた

シェアする

  • このエントリーをはてなブックマークに追加
41AkxXsz+5L._SX258_BO1,204,203,200_

文字列

文字の並びを「”」「’」で囲むと文字列になる。これはStringクラスのオブジェクトっす。「”」「’」どっちでもいいらしいよ。→式展開とか書き手の意図は注意。

文字列は演算もできる。

print "お名前を入力してください:"
name = gets.comp
puts name + "さん、こんにちは"

これで「◯◯さん、こんにちは」と出力される。
gets→ターミナルから入力された文字列を返すメソッド
chomp→文字列末尾から改行文字をなくすメソッド

※getsメソッド面白い。

文字列中の式展開について

「”」で囲まれた文字列の中に#{◯◯}という部分があると「◯◯」を文字列に変換した結果が埋め込まれる。これを式展開という。

「’」で囲まれたものの中にあっても展開しない。

puts "2かける3は#{2*3}です。"
name = "佐藤"
puts "#{name}さん、こんちは"

2かける3は12です。
佐藤さん、こんちは

と出力される。

バックスラッシュ記法というモノもある

「”」でかこんだ中に「”」を書きたい場合など文字列に特別な文字を埋め込むときは、
「”\”"」のようにバックスラッシュ+文字の形で記述する。

記法 特別な文字
\n 改行
\r 復帰
\t タブ
\” 二重引用符(ダブルクォーテーション)
\’ 1重引用符(シングルクォーテーション)
\ バックスラッシュ
\xNN 番号で文字を表す。NNは16進数
\uNNNN ユニコード番号で文字を表す。NNは16進数

文字列を囲む記号(%記法)

%記法というものがあって、
%q、%Q、%を使うと「’」「”」以外の希望で文字列を囲める。
HTMLタグなど文字列に引用符が含まれるときに使うと便利。

%Qと%は「”」と同じく式やバックスラッシュ記法を埋め込むことができ、%qは「’」と同じく式やバックスラッシュ記法を埋め込めない。

msg = %q/こんにちは/                                # / /で囲う
msg = %Q(こんにちは)                                # ( )で囲う
url = %!<a href"http://www.google.com">Google</a>! # ! !で囲う

数値と文字列の変換を行ないたい時

Rubyは数値と文字列を自動的に相互変換しない。

数値と文字列を+で連結したり、>で比較したりするとエラーになるので、
メソッドを使ってそれぞれ変換してあげる。

  • 数値を文字列に変換        :「to_s」メソッド
  • 文字列を整数に変換        :「to_i」メソッド
  • 文字列を浮動小数点数に変換するには:「to_f」メソッド
a = 4; b= 9
puts a.to_s + b
puts a + b.to_i
puts a * b.to_i
result
49
13
36

またある変数が文字列以外のオブジェクトであるときや、何のオブジェクトを指し示しているかわからないときは文字列の連結の代わりに式展開を使えばエラーにならない。

x = 123
s = "xの値は#{x}です"

xの値のオブジェクトが不明のため、展開するようにしている。

Rubyの配列について

配列とは幾つものオブジェクトを並べてまとめるためのオブジェクトのこと。
Rubyの配列はArrayクラスのオブジェクト。
配列の中の個々のオブジェクトを配列の要素という。

配列は「[ ]」で囲う。その中にカンマで要素を区切って並べる。
配列の要素を変更したり、取り出したい場合は「配列名[番号]」と記述。

※要素の番号は0番目から始まる。

animals = ["dog", "cat", "elephant"]
puts animals [0] # 1番目を表示
animals [1] = "bat" # 2番目を変更
puts animals[1] # 2番目を表示

ちなみに、配列にある要素数よりも、
大きい番号を指定して取り出そうとしても「nil(何もない)」が返される。

また大きな番号を指定して要素を加えると配列は自動的に大きくなる。

animals = ["dog", "cat", "elephant"]
puts animals[5]
animals[5] = "whale"
puts animals[5]
result
(ここにnilが出力されている)
whale

ちなみに配列の4番目を指定してもnilが返る。※要素がない(空白)のため。

配列には要素として雑多なオブジェクトを入れることができる。
文字列、数値、その他のオブジェクトをごちゃ混ぜにしても大丈夫。

また配列自体もオブジェクトだから別の配列の要素にすることもできる。

cabinet = [123, "hello", Time.now, ["apple", "orange"]]

あれ、配列の中の配列の要素はどうやって取り出すの?
→上記例だと puts cabinet[3][0]としたらappleが取り出せる。

Rubyの特殊なオブジェクトのnil,true,falseについて

Rubyでは特殊なオブジェクトとして、nil,true,falseが用意されている。

  • nil:何もないことを表すオブジェクト
  • true:真を表すオブジェクト
  • false:偽を表すオブジェクト

配列を操作するメソッド

Arrayクラスのメソッドを使う。

配列の要素数を返すlengthメソッドや、
配列が空かどうかを調べるempty?メソッドなどがあるよ。

また配列に要素を追加する場合は「<<」の演算子(メソッド)をつかう。
→ここ大事。

colors = ["red", "blue", "yellow", "pink"]
puts colors.empty?
colors << "green"
puts colors.length
puts colors[4]
result
false
5
green

配列にも%記法つかえまっせ

「%w()」の中にスペースで区切って文字列を並べると配列になる。
また、文字列の中で式展開やバックスラッシュを使いたい場合は、
大文字で「%W()」を使用する。

animals = ["dog", "cat", "elephant"]
animals = %w(dog cat elephant)

上記同じ意味

inspectとp、というメソッドについて

Rubyのすべてのオブジェクトではinspectメソッドが使える。
inspectメソッドとは、オブジェクトの内容を読みやすい形にした文字列で
返してくれるメソッドのこと。

そしてpメソッドはinspectメソッド結果を表示するメソッド。

「p 変数」は「puts 変数.inspect」と同じ結果になります。
→おお、便利やな。

arr = [1,2,3]
puts arr.inspect
obj = Object.new
p obj
result
[1,2,3]
#<Object:0x007f8cb3880030>

結果はクラス名とオブジェクトIDを返している。
→それがオブジェクトの内容をよみやすい形にした文字列でっせ。

今日はここまでにしとくか。

本記事は下記本の勉強記事です。初学者にとても良い本です。

スポンサーリンク
Sponsored Link
Sponsored Link

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
Sponsored Link