2008年9月27日土曜日

【初めてのRuby】(4)

第4章 文字列

式展開
 a =2
"aの値は#{a}" "aの5乗は#{a**5}"
"現在時刻:#{Time.now}"

バッククオート `date`

 %記法
  %!hoge! バックスラッシュ記法及び式展開が有効
  %q!hoge!  が無効
  %w! hoge hogu higu! 配列
  %W!hoge hogu higu! 配列。   が有効
  %r!hoge! 正規表現リテラル
  
 ヒアドキュメント
  count = database_connectior.get_int(<<"EOS" % author.id)
SELECT COUNT(*)
FROM book
WHERE book.author_id = %d
EOS

  EOSの前に空白文字をいれるには、 <<-'EOS'

  正規表現
  
.*? 任意の文字列
  $1

  正規表現リテラル
   /regexp/iu


story = << EOS
.........
EOS

story.gsub(/Solomon Grundy/, "Hippopotamus")
story.gsub.(/\w+?)day/){"#{$1}."}

"str" + "ing"
str = "str"; str << "ing"

"Look! " * 3 #=>"Look! Look! Look! "
"a,bb, ccc, ddd".split(/,\s?/) #=> ["a", "bb", "cc", "ddd"]
"string".split(//)

 比較 == <
"ad" <=> "ac" #=> 1
メソッド  reverse strip length

イテレータ each_line

 sprintf("%04d", 3) #=> "0003"
"%04d" % 3
sprintf("%08.4f", Math::PI*10) #=> "031.4159"
"%08.4f" % (Math::PI *10)

 シンボル
  :if :"anna terras"

シンボルは内容が同値であれば(==)、同一オブジェクト(equal?)で、immutable
ハッシュのキーに適している。

 日本語対応
$KCODE = 'SJIS'

regexp = /(.)/s SJISモードの正規表現
 regexp = /(.)/n バイト列モードの正規表現

 ソースファイル等はUTF-8を使用し、外部との入出力の際にだけ必要に応じてコード変換するのが普通。
 メソッド encoding lenghth bytesize

 マジックコメント # -*- coding: utf-8 -*-
# vim:fileencodig=UTF-8
 

0 件のコメント: