シリーズ「Ruby1.9、Windowsで」です。
前回まで、クラスの書き方をやってきました。これでやっと、ここで示す、「2-2-1-3 文字」が説明できます。
■文字列は、Stringというクラスです。
文字列は、ここにあるように、クラスです。
そこで、いままでの数字とはちがい、メソッドをもってます。
まず、文字列は、値をそのまま書くには、リテラルのところで示したように
' (シングルクウォート)または、 " (ダブルクウォート)で書きます(意味の違いはリンク先にかいてあります)。
で、これを変数に入れるには
a="abc" |
でOKです。
■文字列の演算
文字列は、足し算と掛け算ができます。
"abc"+"efg" |
ってやると、"abcefg"と文字列が連結されます。
"abc"*2 |
ってやると、2回かかれます。
つまり、 "abcabc" です。
引き算とか割り算はありません("abc"-"d"とかいわれてもねえ・・)
なお、
"abc" % "a" |
と入力すると、"abc"となるかもしれませんが、これは、あまりを求めているのではないです。
%は、文字のフォーマットをするのに使います(sprintfみたいなかんじ)
たとえば、
"%5s" % "abc" |
とやると、5桁分とって、abcとかく、つまり、abcの前に2つスペースが入ります。
ちなみに、<<(本当は半角)は、シフトではなくて、連結です
"abc" << "2"
(<は、本当は半角)
は、"abc2"になります。
■文字の大小、イコール比較
文字の大小、イコール比較は、> >= < <= ==でできます。
(> < は本当は半角)
"abc" == "abc" |
は、trueになります。
■文字のメソッド
文字のメソッドとして大事なのは、
・文字列の長さ
・部分文字列の抽出
・文字の置換
・文字の検索
があります。
(1)文字の長さ
sizeメソッドで求まります。
"abc".size
は3です(3文字なので)
1.9から、漢字だと、sizeの意味が変わり(文字数になる)bytesizeが入ると聞いたのですが、
"あ".sizeも"あ".bytesizeも2とかえってくる(>_<!)
(2)部分文字列の抽出
[はじめの位置..終わりの位置]
でも
[はじめの位置.文字数]
でもOK
"abcdef"[3..4]
だと、
"de"
と帰ってくる。
"abcdefg"[3,4]
だと
"defg"
と帰ってくる。
ちなみに、添え字に正規表現を書くと・・
たとえば、
"abcdefg"[/c.*f/]
(cのあと、任意の文字、文字数でfがくるまで)
とすると、
"cdef"
となります。ちなみに、$~にマッチングの様子が入ります。
また、"abcdefg".slice(3,4)は、"abcdefg"[3,4]と同じです。
(sliceは、[]と同じ動きをします)
(3)文字列の置換
subとgsubがあります。
subは、1回だけ置き換えます
gsubは、全部置き換えます。
たとえば
a="ab" e="efg" "abcabc".sub(a,e) "abcabc".gsub(a,e) |
とやると、
subのほうの結果は、"efgcabc"
gsubのほうの結果は、"efgcefgc"
となります。
(4)文字の検索
index,rindexがつかえます。
"abcabc".index("b")
は1であり(0からはじまるので、2番目=1)
"abcabc".rindex("b")
は4です。
ちなみに、
"abcabc".index("d")
とない文字をいれると、nilが返ります。
と、一般的に使われそうなメソッドの話を説明しました。
これ以外にも、いろいろ便利そうなメソッドが、
http://www.ruby-lang.org/ja/man/html/String.html
に載ってます。
今回はここまで