Ruby:◇文字列:Stringクラスのメソッド ・・・ 【Ruby:13歩目】
◇文字列:Stringクラスのメソッド
□文字列
おそらく 数値 と並んで一番よく使うクラスだろう
(他のプログラミング表現では 型か?)
代表的な Stringクラスに定義されている
(用意された) 文字列操作メソッドを学んでおく
+++++++++++++++++++++++++++++++++++
・基本的な変換
+++++++++++++++++++++++++++++++++++
・文字列操作メソッド例
●to_i(数値:整数にする) ・・・ to_integer(?)ってことか
p "100".to_i #=> 100
p "0".to_i #=> 0
p "".to_i #=> 0 # 空白は 0になる!
p "abc".to_i #=> 0 # 数字でない文字列は 0になる!
p "創る".to_i #=> 0 # 2バイト日本語は 0になる!
p "創る777".to_i #=> 0 # 合わせてもは 0になる!
p "abc777".to_i #=> 777 # 1バイト文字列も 0になる!
p "777創る".to_i #=> 777 # 頭に数字があれば、それだけが変換される!
p "777abc".to_i #=> 777
●to_f(数値:小数にする) ・・・ to_float(?)ってことか
p "100".to_f #=> 100.0 # デフォルトで小数点第一位小数
p "3.0".to_f #=> 3.0
p "100.00".to_f #=> 100.0
p "-100.00".to_f #=> -100.0
p "-2.4".to_f #=> -2.4 # 負でも同じ
p "0.34560".to_f #=> 0.3456
p "0".to_f #=> 0.0 # 返りは0.0!
p "".to_f #=> 0.0 # 空白は 0.0になる!
p "abc".to_f #=> 0.0 # 数字でない文字列は 0.0になる!
p "創る".to_f #=> 0.0 # 2バイト日本語は 0.0になる!
p "創る777".to_f #=> 0.0 # 合わせてもは 0.0になる!
p "abc777".to_f #=> 0.0 # 1バイト文字列も 0.0になる!
p "777創る".to_f #=> 777.0 # 頭に数字があれば、それだけが変換される!
p "777abc".to_f #=> 777.0
あんまり使わないとは思うのだけれど
●hex(16進数の文字列を整数に変換)
p "FF".hex #=> 255
p "10".hex #=> 16
p "abc".hex #=> 2748 # 半角英字はそのまま変換!
p "創る".hex #=> 0 # 2バイト日本語は 0になる!
p "創るFF".hex #=> 0 # 合わせてもは 0になる!
p "abcFF".hex #=> 703743 # 1バイト文字列はそのまま変換!
p "FF創る".hex #=> 255 # 頭に対象文字列があれば、それだけが変換される!
p "FFabc".hex #=> 1047228 # すべて半角文字列なら、そのまま変換される!
●oct(8進数の文字列を整数に変換)
p "7".oct #=> 7
p "8".oct #=> 0 # 存在しないので 0
p "9".oct #=> 0 # 存在しないので 0
p "10".oct #=> 8 # 切り上がり
これはよくお世話になるでしょう
●length と size(文字列のバイト数) ※どちらも同じ
p "abc".size #=> 3 # lengthと同じだ
p "創る".length #=> 4 # 日本語文字はマルチバイト(1文字2バイト)
p "創るmetaboy".length #=> 11 # 混在
先回学んだ
●upcase と upcase!(アルファベット小文字をすべて大文字に)
!がおしりにつけば、破壊的(オブジェクト実際の値を変更)
p "metaboy".upcase! #=> METABOY
p "Metaboy".upcase #=> METABOY
p "Metaboy".upcase! #=> METABOY
p "METABOY".upcase #=> METABOY
p "METABOY".upcase! #=> nil # 破壊的メソッドの場合、対象がないから nil になる
upがあればdownもある
●downpcase と downcase!(アルファベット大文字をすべて小文字に)
!がおしりにつけば、破壊的(オブジェクト実際の値を変更)
p "METABOY".downcase #=> metaboy
p "Metaboy".downcase #=> metaboy
p "Metaboy".downcase #=> metaboy
p "metaboy".downcase #=> metaboy
p "metaboy".downcase! #=> nil # 破壊的メソッドの場合、対象がないから nil になる
日本語ばかりなら、使わないだろうが・・・
●capitalize と capitalize!(先頭アルファベット大文字に、残りを小文字に)
!がおしりにつけば、破壊的(オブジェクト実際の値を変更)
p "METABOY".capitalize #=> Metaboy
p "metaboy".capitalize #=> Metaboy
p "metaboy".capitalize #=> Metaboy
p "Metaboy".capitalize #=> Metaboy
p "Metaboy".capitalize! #=> nil # 破壊的メソッドの場合、対象がないから nil になる
●reverse と reverse!(前後をひっくり返した文字列を返す)
!がおしりにつけば、破壊的(オブジェクト実際の値を変更)
p "metaboy".reverse #=> yobatem
p "Metaboy".reverse #=> yobateM # 大文字はそのまま大文字に
その他
●chop と chop!(文字列の末尾の文字を1バイトとり除く)
!がおしりにつけば、破壊的(オブジェクト実際の値を変更)
p "metaboy".chop #=> metabo
p "Metaboy創る".chop #=> Metaboy創\202 # 末尾の1バイトであること注意
●chomp と chomp!(文字列の末尾の改行文字をとり除く)
!がおしりにつけば、破壊的(オブジェクト実際の値を変更)
p "metaboy\n".chomp #=> metaboy #LINUX運用
p "metaboy\r\n".chomp #=> metaboy #Shift-JIS運用
★注意★
・length と sizeは、(今使っている) Version 1.8.6 では
返ってくるのは「バイト数」だが、1.9 では「文字数」に
なるようだ。
このあたりの変更がよくつまらないポカに
つながるんだよなぁ。(VB,PHP)
PHPなどとの違いを考慮しつつ、ゆっくりと
良書「はじめてのRubyプログラミング
学んでゆく、詳細な記録です。
(本日の参照:120頁)






