跳到主要内容

Ruby 字符串 String

字符串用于保存文本,是 Ruby 中最常用的对象之一。你会在输入输出、文件处理、HTTP、日志和数据解析中频繁使用它。

创建字符串

name = "Ruby"
message = 'Hello'

双引号支持插值:

puts "Hello, #{name}"

单引号不会插值:

puts 'Hello, #{name}'

常用方法

text = " ruby "

puts text.strip
puts text.upcase
puts text.downcase
puts text.include?("ru")
puts text.length

strip 去掉首尾空白,include? 判断是否包含子串。

split 和 join

line = "alice,18,admin"
parts = line.split(",")

puts parts.inspect
puts parts.join(" | ")

split 常用于解析简单文本,join 常用于把数组拼回字符串。

字符串是否可变

Ruby 字符串通常是可变对象:

name = "ruby"
name.upcase!

puts name

没有 ! 的方法通常返回新字符串:

name = "ruby"
upper = name.upcase

puts name
puts upper

bytesize 和 length

text = "你好"

puts text.length
puts text.bytesize

length 更接近字符数量,bytesize 是字节数。处理网络、文件大小、编码问题时,这个区别很重要。

常见错误

在单引号中使用插值:

name = "Ruby"
puts 'Hello, #{name}' # 不会插值

忘记 stripchomp 导致比较失败:

input = "yes\n"
puts input == "yes" # false
puts input.chomp == "yes" # true

小练习

  1. " ruby " 转成 "RUBY"
  2. "a,b,c" 拆成数组。
  3. 比较 "你好".length"你好".bytesize

小结

字符串是 Ruby 的基础工具。你要熟悉插值、stripchompsplitjoininclude?,并注意可变方法和编码相关差异。