Ruby のお勉強 - 文字列 -

公開日:2014-12-18 更新日:2019-05-13
[Ruby]

はじめる

Ruby と言えば、日本人が開発したとか、Ruby on Rails と言うフレームワークが有名、とかぐらいしか知らないので、Ruby を勉強してみることにしました。

文字列

print "こんにちは\n"
print 'こんにちは\n'
こんにちは
こんにちは\n
文字列はダブルコーテーション、シングルコーテーションで囲う。シングルはの場合は、\ がエスケープされない。


print %Q(こん"に'ちは\n)
print %Q<こん"に'ちは\n>
print %Q{こん"に'ちは\n}
print %Q[こん"に'ちは\n]
print %q(こん"に'ちは\n)
こん"に'ちは
こん"に'ちは
こん"に'ちは
こん"に'ちは
こん"に'ちは\n
%Qを先頭につけて、後ろを適当な括弧が囲うと、
ダブルコーテーション、シングルコーテーションがそのまま出力される。
%qにすると、\ がエスケープされない。


print "a" + "b" + "\n" 
print "a" "b" "\n"
ab
ab
文字列の結合は + を使ってもできるし、省略もできる、場合もある。


print "1" + 1
コンパイルエラー
文字列と数値を結合する場合はコンパイルエラーになる。


print "abc" + 123.to_s
abc123
数値を文字列に変換する場合には、to_s() を使う。
引数がない場合、() は省略できるみたい。


print "99".to_i + 1
100
文字列を数値に変換する場合には、to_i() を使う。


print "1.1".to_i.to_s + "\n"
print "1.5".to_i.to_s + "\n"
print "1.9".to_i.to_s + "\n"
print "1.1".to_f.to_s + "\n"
print "1.5".to_f.to_s + "\n"
print "1.9".to_f.to_s + "\n"
1
1
1
1.1
1.5
1.9
実数の文字列を数値に変換する場合には、to_f() を使う。
to_i() だと、小数点以下が切り捨てられる。
サンプルでは、改行コードをつけるため、.to_s() をつけています。


print "ABC" * 3
ABCABCABC
* を使って、文字列を繰り返すことができる。


print "ABC" / 3
print "ABC" - "A"
コンパイルエラー
- は動きそうな気がしたけど、動かなかった。


print "ABC"     || "XYZ"; puts "\n"
print "ABCDEFG" && "BCD"; puts "\n"
ABC
BCD
論理演算子も使える。
|| は、コンパイルエラーは発生しなかったが、予想と違う結果となった。用途不明。
&& は重複する部分が残る。


s = "あいうえおかきくけこ"
print s[0]     + "\n"
print s[1..3]  + "\n"
print s[4..-1] + "\n"
あ
いうえ
おかきくけこ
文字列中の一部分を取得する。全角と半角はどちらも1文字として扱われる。
文字列の残りを取りたい場合、[4..] としたらエラーになった。きちんと指定する必要がある。
99 とか大きい値にするか、-1 にすればOK。


print "abc".length  .to_s + "\n"
print "abc".size    .to_s + "\n"
print "abcdefg".count("a-z")
3
3
71
文字列長は length と size で取れる。
count は、指定したパターンに該当する文字の数を数えてくれる。


s = "  abc  "
print "|" + s.strip  + "|\n"
print "|" + s.lstrip + "|\n"
print "|" + s.rstrip + "|\n"
|abc|
|abc  |
|  abc|
空白を削除するには、trim ではなく、strip を使う。
strip は、皮をはいだり、取り除くと言う意味がある。
服を脱ぐという意味もあるので、あの strip と同じです。


print "abcdefg abcdefg".capitalize + "\n"
print "ABCDEFG ABCDEFG".capitalize + "\n"
Abcdefg abcdefg
Abcdefg abcdefg
最初の文字を大文字にして、後ろを小文字にしてくれます。
スペースを入れても、後ろの単語の先頭は大文字にはならない。


print "abcdefg".upcase   + "\n"
print "ABCDEFG".downcase + "\n"
ABCDEFG
abcdefg
大文字を小文字にしたり、小文字を大文字にしたり。