Ruby - 字符串

Ruby 中的 String 对象保存和操作一个或多个字节的任意序列,通常表示代表人类语言的字符。

最简单的字符串文字用单引号(撇号字符)括起来。 引号内的文本是字符串的值 −

'This is a simple Ruby string literal'

如果您需要在单引号字符串文字中放置一个撇号,请在其前面加上一个反斜杠,这样 Ruby 解释器就不会认为它终止了该字符串 −

'Won\'t you read O\'Reilly\'s book?'

反斜杠还可以转义另一个反斜杠,因此第二个反斜杠本身不会被解释为转义字符。

以下是 Ruby 中与字符串相关的特性。


表达式替换

表达式替换是一种使用 #{ 和 } 将任何 Ruby 表达式的值嵌入到字符串中的方法 −

#!/usr/bin/ruby

x, y, z = 12, 36, 72
puts "The value of x is #{ x }."
puts "The sum of x and y is #{ x + y }."
puts "The average was #{ (x + y + z)/3 }."

这将产生以下结果 −

The value of x is 12.
The sum of x and y is 48.
The average was 40.

通用分隔字符串

使用一般的分隔字符串,您可以在一对匹配的任意分隔符中创建字符串,例如,!、(、{、< 等,前面有一个百分号字符 (%)。Q、q 和 x 有特殊含义。一般的分隔字符串可以是 −

%{Ruby is fun.}  equivalent to "Ruby is fun."
%Q{ Ruby is fun. } equivalent to " Ruby is fun. "
%q[Ruby is fun.]  equivalent to a single-quoted string
%x!ls! equivalent to back tick command output `ls`

转义字符


字符编码

Ruby 的默认字符集是 ASCII,其字符可以用单个字节表示。 如果您使用 UTF-8 或其他现代字符集,则字符可能用一到四个字节表示。

您可以在程序开始时使用 $KCODE 更改字符集,如下所示 −

$KCODE = 'u'

字符串内置方法

我们需要有一个 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

字符串解包指令

示例

尝试以下示例来解压缩各种数据。

"abc \0\0abc \0\0".unpack('A6Z6')   #=> ["abc", "abc "]
"abc \0\0".unpack('a3a3')           #=> ["abc", " \000\000"]
"abc \0abc \0".unpack('Z*Z*')       #=> ["abc ", "abc "]
"aa".unpack('b8B8')                 #=> ["10000110", "01100001"]
"aaa".unpack('h2H2c')               #=> ["16", "61", 97]
"\xfe\xff\xfe\xff".unpack('sS')     #=> [-2, 65534]
"now = 20is".unpack('M*')           #=> ["now is"]
"whole".unpack('xax2aX2aX1aX2a')    #=> ["h", "e", "l", "l", "o"]