『programming ruby』のメモを読んでString


しばらく勉強していたRuby on Railsを使って、小さなものを作って、最初は直接読んでいた『Agile Web Development with Rails 2 nd』はたくさんのものができていましたが、まだ分からないところがあるので、今振り返ってRubyの本をよく見てみましょう.
ルビーではすべてのものがオブジェクトで、Stringも例外ではありません.同じ値を2つ含む文字列は実は2つのobjectです.
a = "string"
b = "string"
c = a

puts a.object_id
puts b.object_id
puts c.object_id
#  :
#
#21676710
#21676690
#21676710
 
文字列の接続:
a ="hello,"
b ="world!"
puts a+b
puts a<<b
#  :
#hello,world!
#hello,world!
上記のコード例のように、「+」と「<<」の2つの文字列の接続を行うことができます.文字列が長すぎる場合、コード内で改行する必要がある場合は、次の方法を使用します.
a ="hello,\
       world!"
b ="hello,"\
  +"world!"
puts a
puts b
#  :
#hello,       world!
#hello,world!
ここでは、aに値を割り当てるときにworldの前にスペースがあり、2行目のフォーマットが引用符に含まれているため、2つ目の方法で出力される結果に「world」文字の前にスペースがあることに注意してください.
 
二重引用符と一重引用符の違い:
二重引用符では、より多くのエスケープ文字がサポートされています.たとえば、
a ="hello,
world!" b ='hello,
world!' puts a puts b # : #hello, #world! #hello,
world!
式は二重引用符でもサポートされています
 
a = "jack"
puts "who is #{a}"

#  :
#who is jack
式は、二重引用符の出力式の値を#{expression}として挿入します.
グローバル変数とクラス変数には{}は必要ありません.次のようになります.
$greeting = "Hello" # $greeting is a global variable
@name = "Prudence" # @name is an instance variable
puts "#$greeting, #@name"

#  :
#Hello, Prudence
 
正規表現:
rubyはperl標準の正規表現をサポートし、記号=~を使用します.
a = "php is programming language ,ruby too"
puts a if a=~/php.*ruby/ 
puts a=~/php ruby/ 

#  :
#php is programming language ,ruby too
#nil
一致が成功すると、一致する文字の文字列内の位置が返されます.
rubyには、$`が一致する列の前の文字を返し、$&が一致する文字列を返し、$'が一致する列の後ろの文字列を返すグローバル変数もあります.
 
def show_regexp(a, re)
  if a =~ re
    "#{$`}<<#{$&}>>#{$'}"
  else
    "no match"
  end
end

puts show_regexp('Fats Waller', /a/)
#  :
#F<<a>>ts Waller