Ruby 字符串(String)
Ruby 中的 String 对象用于存储或操作一个或多个字节的序列。
Ruby 字符串分为单引号字符串(')和双引号字符串("),区别在于双引号字符串能够支持更多的转义字符。
单引号字符串
最简单的字符串是单引号字符串,即在单引号内存放字符串:
'这是一个 Ruby 程序的字符串'
如果您需要在单引号字符串内使用单引号字符,那么需要在单引号字符串使用反斜杠(\),这样 Ruby 解释器就不会认为这个单引号字符是字符串的终止符号:
'Won\'t you read O\'Reilly\'s book?'
反斜杠也能转义另一个反斜杠,这样第二个反斜杠本身不会解释为转义字符。
以下是 Ruby 中字符串相关的特性。
双引号字符串
在双引号字符串中我们可以使用 #{} 井号和大括号来计算表达式的值:
字符串中嵌入变量:
#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
name1 = "Joe"
name2 = "Mary"
puts "你好 #{name1}, #{name2} 在哪?"
以上实例输出运行输出结果为:
你好 Joe, Mary 在哪?
字符串中进行数学运算:
实例如下:
#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
x, y, z = 12, 36, 72
puts "x 的值为 #{ x }"
puts "x + y 的值为 #{ x + y }"
puts "x + y + z 的平均值为 #{ (x + y + z)/3 }"
以上实例输出运行输出结果为:
x 的值为 12
x + y 的值为 48
x + y + z 的平均值为 40
转义字符
下标列出了可使用反斜杠符号转义的转义字符或非打印字符。
注意:在一个双引号括起的字符串内,转义字符会被解析。在一个单引号括起的字符串内,转义字符不会被解析,原样输出。
反斜杠符号 | 十六进制字符 | 描述 |
---|---|---|
\a | 0x07 | 报警符 |
\b | 0x08 | 退格键 |
\cx | Control-x | |
\C-x | Control-x | |
\e | 0x1b | 转义符 |
\f | 0x0c | 换页符 |
\M-\C-x | Meta-Control-x | |
\n | 0x0a | 换行符 |
\nnn | 八进制表示法,其中 n 的范围为 0.7 | |
\r | 0x0d | 回车符 |
\s | 0x20 | 空格符 |
\t | 0x09 | 制表符 |
\v | 0x0b | 垂直制表符 |
\x | 字符 x | |
\xnn | 十六进制表示法,其中 n 的范围为 0.9、 a.f 或 A.F |
字符编码
Ruby 的默认字符集是 ASCII,字符可用单个字节表示。如果您使用 UTF-8 或其他现代的字符集,字符可能是用一个到四个字节表示。
您可以在程序开头使用 $KCODE 改变字符集,如下所示:
$KCODE = 'u'
下面是 $KCODE 可能的值。
编码 | 描述 |
---|---|
a | ASCII (与 none 相同)。这是默认的。 |
e | EUC。 |
n | None (与 ASCII 相同)。 |
u | UTF-8。 |
字符串内建方法
我们需要有一个 String 对象的实例来调用 String 方法。下面是创建 String 对象实例的方式:
new [String.new(str="")]
这将返回一个包含 str 副本的新的字符串对象。现在,使用 str 对象,我们可以调用任意可用的实例方法。例如:
#!/usr/bin/ruby
myStr = String.new("THIS IS TEST")
foo = myStr.downcase
puts "#{foo}"
这将产生以下结果:
this is test
下面是公共的字符串方法(假设 str 是一个 String 对象):
序号 | 方法 & 描述 |
---|---|
1 | str % arg 使用格式规范格式化字符串。如果 arg 包含一个以上的替代,那么 arg 必须是一个数组。如需了解更多格式规范的信息,请查看"内核模块"下的 sprintf。 |
2 | str * integer 返回一个包含 integer 个 str 的新的字符串。换句话说,str 被重复了 integer 次。 |
3 | str + other_ |