『programming ruby』のメモを読んでString
しばらく勉強していたRuby on Railsを使って、小さなものを作って、最初は直接読んでいた『Agile Web Development with Rails 2 nd』はたくさんのものができていましたが、まだ分からないところがあるので、今振り返ってRubyの本をよく見てみましょう.
ルビーではすべてのものがオブジェクトで、Stringも例外ではありません.同じ値を2つ含む文字列は実は2つのobjectです.
文字列の接続:
二重引用符と一重引用符の違い:
二重引用符では、より多くのエスケープ文字がサポートされています.たとえば、
グローバル変数とクラス変数には{}は必要ありません.次のようになります.
正規表現:
rubyはperl標準の正規表現をサポートし、記号=~を使用します.
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