Ruby - 字串



Ruby 中的字串物件儲存並操作任意數量的一個或多個位元組的序列,通常表示代表人類語言的字元。

最簡單的字串字面量用單引號(撇號字元)括起來。引號內的文字是字串的值:

'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

String 解包指令

示例

嘗試以下示例來解包各種資料。

"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"]
廣告
© . All rights reserved.