字符串 #
基本使用 #
- 使用单引号或双引号定义字符串,其中单引号字符串不支持转义也不支持字符串插值。
- 使用 ‘' 或者单引号和双引号的交替来避免特殊字符。
s = 'Hello World'
ds = "Hello World"
多个字符串间使用 +
或 <<
进行连接
puts 'foo' + 'bar'
puts 'foo' << 'bar'
遍历字符串 #
for c in s.chars
puts c
end
多行字符串 #
%q{}
表示单引号字符串%Q{}
表示双引号字符串
text = %q{
1, 2, 3
one, two, three
"x, "y", "z"
}
dtext = %Q{
1, 2, 3
one, two, three
"x, "y", "z"
}
puts text
puts dtext
还可以使用 Symbol 来定义多行字符串,格式为 <<SYMBOL
开始到 SYMBOL
结束,支持字符串插值。
symbol_text = <<NAME
1, 2, 3, #{s}
one, two, three
"x, "y", "z"
NAME
同时定义多个 Symbol
puts <<'foo',<<'bar'
"hello"
foo
'world'
bar
字符串插值 #
字符串插值(String Interpolation)使用符号 #{}
定义,不可以省略括号。只有双引号字符串支持字符串插值。
name = 'Peter'
str = "name=#{name}, #{if name.length>10; else name.length end}"
puts str # => name=Peter, 5
single_quote = 'name=#{name}, #{if name.length>10; else name.length end}'
puts single_quote # => name=#{name}, #{if name.length>10; else name.length end}
常用方法 #
截取 #
左右都是闭区间
puts 'Hello World'[6..9] # => Worl
格式化 #
puts 'name=%s&length=%d' % [name, name.length] # => name=Peter&length=5
替换 #
gsub()
替换全部,sub()
替换第一个匹配的,默认返回字符串的拷贝,!
表示修改原来的字符串
puts 'Hello World'.gsub!(/o/, '-') # => Hell- W-rld
重复 #
puts 'a' # => aaa