字符串

字符串 #

基本使用 #

  • 使用单引号或双引号定义字符串,其中单引号字符串不支持转义也不支持字符串插值。
  • 使用 ‘' 或者单引号和双引号的交替来避免特殊字符。
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
沪ICP备17055033号-2