在習題 9 中我丟給你了一些新東西。我讓你看到兩種讓字符串擴展到多行的方法。第一種方法是在月份中間用` \n` (back-slash n) 隔開。這兩個字串的作用是在該位置上放入一個「新行(new line)」字符。
使用反斜線 `\ `(back-slash) 可以將很難輸出的字符放到字符串里。針對不同的符號有很多這樣的所謂「轉義序列(escape sequences)」,但有一個特殊的轉義序列,就是 `\` 雙反斜線( double back-slash)。這兩個字符組合會輸出一個反斜線來。接下來我們做幾個練習,然后你就知道這些轉義序列的意義了。
另外一種重要的轉義序列是用來將單引號` '` 和雙引號` "` 轉義。想像你有一個用雙引號括起來的字符串,你想要在字串裡的內容里再加入一組雙引號進去,比如你想說 `" I "understand" joke." `,Ruby 就認為` "understand"` 前后的兩個引號是字符串的邊界,從而把字符串弄錯。你需要一種方法告訴 Ruby 字串里面的雙引號不是真正的雙引號。
要解決這個問題,你需要將雙引號和單引號轉義,讓 Ruby 將引號也包含到字符串里面去。這里有一個例子:
~~~
"I am 6'2\" tall." # escape double-quote inside string
'I am 6\'2" tall.' # escape single-quote inside string
~~~
第二種方法是使用文件語法(document syntax),也就是 `<<NAME `,你可以在鍵入 `NAME `前放入\ 任意多行的文字。接下來你可以看到如何使用。
~~~
tabby_cat = "\tI'm tabbed in."
persian_cat = "I'm split\non a line."
backslash_cat = "I'm \\ a \\ cat."
fat_cat = <<MY_HEREDOC
I'll do a list:
\t* Cat food
\t* Fishies
\t* Catnip\n\t* Grass
MY_HEREDOC
puts tabby_cat
puts persian_cat
puts backslash_cat
puts fat_cat
~~~
# 你應該看到的結果
* * * * *
注意你打出來的 tab 字符,這節練習中的文字間隔符號對于答案的正確性是很重要的。
~~~
$ ruby ex10.rb
I'm tabbed in.
I'm split
on a line.
I'm \ a \ cat.
I'll do a list:
* Cat food
* Fishies
* Catnip
* Grass
$
~~~
# 加分習題
* * * * *
1. 上網查找一下還有哪些可用的轉義序列。
2. 結合轉義序列和格式化字符串,創造一種復雜的格式。
- 笨方法更簡單
- 習題 00: 準備工作
- 習題 01: 第一個程序
- 習題 02: 注釋和#號
- 習題 03: 數字和數學計算
- 習題 04: 變量的命名
- 習題 05: 更多的變量和輸出
- 習題 06: 字符串和文字
- 習題 07: 更多輸出
- 習題 08: 輸出,輸出
- 習題 09: 輸出,輸出,輸出~
- 習題 10: 那是啥?
- 習題 11: 提問
- 習題 12: 模塊
- 習題 13: 參數,解包,參數
- 習題 14: 提示和傳遞
- 習題 15: 讀取文件
- 習題 16: 操作文件
- 習題 17: 更多的文件操作
- 習題 18: 命名,變量,代碼,函數
- 習題 19: 函數和變量
- 習題 20: 函數和文件
- 習題 21: 函數可以傳入信息
- 習題 22: 到現在你學到了什么?
- 習題 23: 閱讀一些代碼
- 習題 24: 更多練習
- 習題 25: 更多更多的練習
- 習題 26: 恭喜你,現在來考試了!
- 習題 27: 記住邏輯關系
- 習題 28: Boolean表達式練習
- 習題 29: 如果
- 習題 30: Else 和 If
- 習題 31: 做出判斷
- 習題 32: 循環和數組
- 習題 33: While
- 習題 34: 存取數組里的元素
- 習題 35: 分支和函數
- 習題 36: 設計和測試
- 習題 37: 重視各種符號