ウィリアムのいたずらの、まちあるき、たべあるきーPART2

gooブログ「ウィリアムのいたずらの、まちあるき、たべあるき」がお引越ししてきました

Ruby1.9、Windowsで-その7 文字列


 シリーズ「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
に載ってます。

 今回はここまで