ruby 字符串学习笔记1

1 从一种数据结构中构件字符串

hash = { key1: "val1", key2: "val2" }
string = ""
hash.each { |k,v| string << "#{k} is #{v}\n" }
puts string
# key1 is val1
# key2 is val2

变种

string = ""
hash.each { |k,v| string << k.to_s << " is " << v << "\n" }

更高效办法使用 Array#join

puts hash.keys.join("\n") + "\n"
# key1
# key2

或者

puts hash.keys.join("") 

# key1key2

 2 创建一个包含ruby变量或者表达式的字符串

number = 5
"The number is #{number}."# => "The number is 5."
"The number is #{5}."# => "The number is 5."
"The number after #{number} is #{number.next}."# => "The number after 5 is 6."
"The number prior to #{number} is #{number-1}."# => "The number prior to 5 is 4."
"We're ##{number}!"# => "We're #5!"

也可以这样使用但不要这么做

%{Here is #{class InstantClass
        def bar
          "some text"
        end
            end
       InstantClass.new.bar
 }.}
# => "Here is some text."

here document使用

name = "Mr. Lorum"
email = <<END
Dear #{name},
Unfortunately we cannot process your insurance claim at this
time. This is because we are a bakery, not an insurance company.
Signed,
Nil, Null, and None
Bakers to Her Majesty the Singleton
END

# => "Dear Mr. Lorum,\nUnfortunately we cannot process your insurance claim at this\ntime. This is because we are a bakery, not an insurance company.\nSigned,\nNil, Null, and None\nBakers to Her Majesty the Singleton\n"
<<end_of_poem
There once was a man from Peru
Whose limericks stopped on line two
end_of_poem
# => "There once was a man from Peru\nWhose limericks stopped on line two\n"

 

posted on 2015-11-30 13:25  c3tc3tc3t  阅读(346)  评论(0编辑  收藏  举报