当前位置:  首页>> 技术小册>> Ruby入门教程

Ruby 中的 String 对象用于存储或操作一个或多个字节的序列。

Ruby 字符串分为单引号字符串(’)和双引号字符串(”),区别在于双引号字符串能够支持更多的转义字符。

单引号字符串

最简单的字符串是单引号字符串,即在单引号内存放字符串:

  1. '这是一个 Ruby 程序的字符串'

如果您需要在单引号字符串内使用单引号字符,那么需要在单引号字符串使用反斜杠(),这样 Ruby 解释器就不会认为这个单引号字符是字符串的终止符号:

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

反斜杠也能转义另一个反斜杠,这样第二个反斜杠本身不会解释为转义字符。

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

双引号字符串

在双引号字符串中我们可以使用 #{} 井号和大括号来计算表达式的值:

字符串中嵌入变量:

实例

  1. #!/usr/bin/ruby
  2. # -*- coding: UTF-8 -*-
  3. name1 = "Joe"
  4. name2 = "Mary"
  5. puts "你好 #{name1}, #{name2} 在哪?"

以上实例输出运行输出结果为:

  1. 你好 Joe, Mary 在哪?

字符串中进行数学运算:

实例

  1. #!/usr/bin/ruby
  2. # -*- coding: UTF-8 -*-
  3. x, y, z = 12, 36, 72
  4. puts "x 的值为 #{ x }"
  5. puts "x + y 的值为 #{ x + y }"
  6. puts "x + y + z 的平均值为 #{ (x + y + z)/3 }"

以上实例输出运行输出结果为:

  1. x 的值为 12
  2. x + y 的值为 48
  3. x + y + z 的平均值为 40

Ruby 中还支持一种采用 %q 和 %Q 来引导的字符串变量,%q 使用的是单引号引用规则,而 %Q 是双引号引用规则,后面再接一个 (! [ { 等等的开始界定符和与 } ] ) 等等的末尾界定符。

跟在 q 或 Q 后面的字符是分界符.分界符可以是任意一个非字母数字的单字节字符.如:[,{,(,<,!等,字符串会一直读取到发现相匹配的结束符为止.

实例

  1. #!/usr/bin/ruby
  2. # -*- coding: UTF-8 -*-
  3. desc1 = %Q{Ruby 的字符串可以使用 '' ""。}
  4. desc2 = %q|Ruby 的字符串可以使用 '' ""。|
  5. puts desc1
  6. puts desc2

以上实例输出运行输出结果为:

  1. Ruby 的字符串可以使用 '' ""
  2. Ruby 的字符串可以使用 '' ""

转义字符

下标列出了可使用反斜杠符号转义的转义字符或非打印字符。

注意:在一个双引号括起的字符串内,转义字符会被解析。在一个单引号括起的字符串内,转义字符不会被解析,原样输出。

  1. 反斜杠符号 十六进制字符 描述
  2. \a 0x07 报警符
  3. \b 0x08 退格键
  4. \cx Control-x
  5. \C-x Control-x
  6. \e 0x1b 转义符
  7. \f 0x0c 换页符
  8. \M-\C-x Meta-Control-x
  9. \n 0x0a 换行符
  10. \nnn 八进制表示法,其中 n 的范围为 0.7
  11. \r 0x0d 回车符
  12. \s 0x20 空格符
  13. \t 0x09 制表符
  14. \v 0x0b 垂直制表符
  15. \x 字符 x
  16. \xnn 十六进制表示法,其中 n 的范围为 0.9 a.f A.F

字符编码

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

您可以在程序开头使用 $KCODE 改变字符集,如下所示:

  1. $KCODE = 'u'

下面是 $KCODE 可能的值。

  1. 编码 描述
  2. a ASCII (与 none 相同)。这是默认的。
  3. e EUC
  4. n None (与 ASCII 相同)。
  5. u UTF-8

字符串内建方法

我们需要有一个 String 对象的实例来调用 String 方法。下面是创建 String 对象实例的方式:

  1. new [String.new(str="")]

这将返回一个包含 str 副本的新的字符串对象。现在,使用 str 对象,我们可以调用任意可用的实例方法。例如:

实例

  1. #!/usr/bin/ruby
  2. myStr = String.new("THIS IS TEST")
  3. foo = myStr.downcase
  4. puts "#{foo}"

这将产生以下结果:

  1. this is test

实例
尝试下面的实例,解压各种数据。

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

该分类下的相关小册推荐:

暂无相关推荐.