4.1.1 文字列リテラル
文字列リテラルとは、""や''で囲まれた文字列。Stringクラスのインスタンスです。
4.1.2 バックスラッシュ記法
4.1.3 式展開
4.1.4 バッククォート文字列
4.1.5 パーセント記法
4.1.6 ヒアドキュメント
その他の話
配列から文字列を作る
["ab", "bc", "cd"].join("-") #=> "ab-bc-cd"
[13, 45, 50].join(":") #=> "13:45:50"
ハッシュから文字列を作る
hash = { "key1" => "val1", "key2" => "val2" }
str = ""
hash.each { |k,v| str << "#{k} is #{v}\n" }
puts str
# key1 is val1
# key2 is val2
文字列から配列を作る
"/usr/local/my/doc".split("/") #=> ["", "usr", "local", "my", "doc" ]
課題
0. 文字列を作る
str = "Hello"
puts str.dup
dupは、duplicateの略から名付けられたメソッドで、オブジェクトを複製することができます。
複製とは、まったく同じものをコピーして別の場所に保存することです。
この場合は、dupの必要はありません。
1. 式展開(変数の値を文字列の中で表示する)
num = 100
str = "my number is #{num}"
puts str.dup
" # <= ここにどうぞ
同じく、dupの必要はありません。
2. 文字列リテラルを作る場合の、一重符('')と二重符("")の違いは?
シングルクオートだと式展開ができない
OK
3. 改行、タブを含めた文字列を作る
str = "hello Flippr"
puts str
puts "#{str},hello ruby"
text = %q|programming's fun! Flippr is "Awesome"|
puts "Hi.#{text}"
タブの意味がいまいち.....
ちょっとわかりにくかったですかね。
文字列内で、改行、タブを挿入するときは、エスケープ記号を使って、
"\n"(改行)
"\t"(タブ)
と書きます。
4. ヒアドキュメントを作る
s = <<EOS
this is heredocument
ruby is Object Oriented Script Language.
EOS
OK
5. message="This is SOS from Captain Jack"として、messageの文字列を逆さにする
逆さにするの意味がわかりません
そのままの意味でしたが、わかりにくかったですかね。
hello #=> olleh
です。
String#reverseというメソッドを使います。
"This is SOS from Captain Jack".reverse
6. messageをすべて大文字にする
OK
7. messageをすべて小文字にする
OK
8. messageを空白で区切り、単語の配列を取得する( #=> ["This", "is", "SOS", "from", "Captain", "Jack"]
message="this,is,SOS,captain,jack"
puts message.split(/,/)
OK
9. messageのすべての空白を'+'に置換する(gsubを使う)
puts "this is captain jack".gsub(/ /, "+")
OK
10. messageの先頭10文字からなる部分文字列を作る([]を使用)
def take_nchars(str,n)
str.slice(/\A.{0,#{n}}/m)
end
puts take_nchars("this is captain jack",10)
[]を使った方法はわかりませんでした。
シンプルに、
でOK.または、Rangeを使って、
puts str[0..9]
puts str[0...10]
と書くこともできます。
また、str.slice(0,10)とstr[0,10]は同じです
11. 整数1000を文字列化する
OK
12. "ping!"を10回繰り返した文字列を作る(*を使う)
____
OK
13. "hello\n"という文字列から末尾の改行を取り除く
____
OK
14. システムコマンド"date"を実行して、現在時刻を得る
現在時刻を得るという点では、Time.nowでもいいのですが、元の意図は、バッククオートを使って、システムコマンドを呼び出す方法でした。
最終更新:2009年06月09日 00:07