ruby 学习 -- string --1

# define
french_string = "il xc3xa9tait une fois"
long_string = <<EOF
Here is a long string
With many paragraphs
EOF

puts long_string.empty?
puts long_string.include? "many"

puts french_string + long_string

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

# join
data = ['1', '2', '3']
s = ''
data.each { |x| s << x << ' and a '}
puts s # => "1 and a 2 and a 3 and a "
puts data.join(' and a ')

# number
number = 5
puts "The number is #{number}." # => "The number is 5."
puts "The number is #{5}." # => "The number is 5."
puts "The number after #{number} is #{number.next}."
# => "The number after 5 is 6."
puts "The number prior to #{number} is #{number-1}."
# => "The number prior to 5 is 4."
puts "We're ##{number}!" # => "We're #5!"
puts "I've set x to #{x = 5; x += 1}."

# Escaping
puts "#{foo}"
puts '#{foo}'
# puts "#{foo}" # error because no variable of foo defined.
template = 'Oceania has always been at war with %s.'
puts template % 'Eurasia' # => "Oceania has always been at war with Eurasia."

puts 'To 2 decimal places: %.4f' % Math::PI
puts 'Zero-padded: %.3d' % Math::PI

JSP, ASP type

require 'erb'
template = ERB.new %q{Chunky <%= food %>!}
food = "bacon"
puts template.result(binding) # => "Chunky bacon!"
food = "peanut butter"
puts template.result(binding) # => "Chunky peanut butter!"
puts template.result

 reverse, reverse!, split

 reverse 和 reverse! 的区别:reverse 不改变 string 本身, reverse! 相当于 s=s.reverse

s = ".sdrawkcab si gnirts sihT"
puts s.reverse
puts s
puts s.reverse!
puts s.split(/(s+)/) # ["This", " ", "string", " ", "is", " ", "backwards."]
puts s.split(/s+/) # => ["This", "sting", "is", "backwards."]
puts s.split(' ')     # => ["This", "sting", "is", "backwards."]

八进制 和 十六进制 的定义

octal = "