Ruby 是一種直譯式、動態、反射式的 物件導向 程式語言。由松本行弘(Yukihiro Matsumoto)開發,Ruby 專注於簡潔與高效。其優雅的語法讓開發人員更容易閱讀和編寫程式碼。
在本指南中,我們將在 Ruby 中處理字串.
先決條件
要執行本教學中示範的步驟,您需要以下組件:
- 配置妥當的 Ubuntu 系統。深入了解如何在 CloudSigma 上配置您自己的 Ubuntu 伺服器.
- 任何現代文字編輯器,最好具有語法高亮功能,例如:VS Code, Sublime Text, Atom, Brackets, Vim等。
字串資料類型
在程式設計中,字串 是一種每種現代程式語言都支援的常見資料類型。它的特點是一串字元序列。整個字元序列被視為單一資料。字串可以包含字母、數字和特殊字元/符號。
Ruby 作為一種純物件導向的程式語言,將字串視為物件。與許多其他語言不同,Ruby 中的字串是可變的(mutable)。基本上,字串的值可以就地(in-place)更改。
步驟 1 – 建立與列印字串
在 Ruby 中,字串可以用單引號( ')或雙引號( ")包圍。以下是 Ruby 中兩個有效的字串:
|
1 2 |
'the quick brown fox' "jumps over the lazy dog" |
要在主控台螢幕上列印任何輸出,Ruby 提供了 print 方法:
|
1 2 |
print 'the quick brown fox' print "jumps over the lazy dog" |
是時候付諸行動了。建立一個新的 Ruby 檔案 practice.rb 並輸入以下程式碼:
執行程式碼:
|
1 |
ruby practice.rb |
正如預期, print 指令會列印提供的字串。如果我們想在不同的行上列印字串,最好改用 puts 。更新程式碼:
|
1 2 |
puts 'the quick brown fox' puts "jumps over the lazy dog" |
接下來,再次執行程式碼:
|
1 |
ruby practice.rb |
步驟 2 – 字串變數
變數 是指指向電腦記憶體中儲存特定值之位置的名稱。我們可以將所需的值儲存在變數中,並在稍後使用。
在 Ruby 中,要宣告字串變數,請定義變數名稱並指派字串值:
|
1 |
<variable_name> = <string> |
在 practice.rb 中寫入以下程式碼::
|
1 2 3 4 |
first_half = 'the quick brown fox' second_half = "jumps over the lazy dog" puts first_half puts second_half |
執行程式碼:
|
1 |
ruby practice.rb |
在這裡:
- 我們已經定義了兩個變數 first_half 和 second_half,每個都指派了一個字串值。
- 而 puts 方法會列印變數的值。
步驟 3 – 字串串接
透過串接,我們可以將多個字串組合在一起以建立一個新字串。字串串接由串接運算子( +)表示。請注意,在進行算術運算時,此符號也是加法運算子。
讓我們嘗試對目前宣告的字串進行字串串接:
|
1 |
puts "the quick brown fox" + "jumps over the lazy dog" |
執行程式碼:
|
1 |
ruby practice.rb |
如輸出所示,串接不會在字串之間引入任何額外字元。這就是為什麼 fox 和 jumps 被擠在一起。我們可以透過在 之後引入空格來解決此問題:fox:
|
1 |
puts "the quick brown fox " + "jumps over the lazy dog" |
執行程式碼:
|
1 |
ruby practice.rb |
現在輸出看起來好多了。
字串串接也適用於變數。請看以下範例:
|
1 2 |
first_half = "the quick brown fox " puts first_half + "jumps over the lazy dog" |
執行程式碼:
|
1 |
ruby practice.rb |
下一個範例示範了長鏈的字串串接:
|
1 2 3 |
username = "cloudsigma" fav_color = "blue" puts "hello, " + username + "! your favorite color is " + fav_color + "." |
執行程式碼:
|
1 |
ruby practice.rb |
到目前為止,我們只處理了字串變數。如果有不同的變數類型會怎麼樣?以下程式測試了這種情境:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts username + user_id |
當嘗試執行此程式時,Ruby 將會拋出錯誤訊息:
|
1 |
ruby practice.rb |
然而,我們可以將整數轉換為字串以避免此問題:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts username + user_id.to_s |
這裡:
-
此方法 to_s 會將變數值轉換為字串。
在處理郵遞區號、貨幣、電話號碼和其他數值資料等元素時,將數字轉換為字串是常見的情況。
步驟 4 – 字串插值
雖然字串串接是一個強大的功能,但它很容易變得棘手。在許多情況下,您可能會發現自己漏掉了串接運算子( +),從而導致令人頭痛的問題。此外,在處理不同的資料類型時,必須先將其轉換為字串。幸好,Ruby 提供了其他方法,可以使用此功能將變數值注入到字串中:字串插值.
它看起來像這樣。例如,與其使用:
|
1 |
"hello, " + username + "!" |
我們將使用:
|
1 |
"hello, #{username}!" |
雖然語法看起來可能有點奇怪,但它極大地簡化了程式碼。無需手動呼叫 to_s 方法來將變數值轉換為字串。
讓我們使用這個新技術來更新我們之前的程式碼:
|
1 2 3 |
username = "cloudsigma" user_id = 20 puts "hello, #{username}! your user ID is #{user_id}" |
執行程式碼:
|
1 |
ruby practice.rb |
步驟 5 – 字串字面值與字串值
請注意,在程式碼中宣告的字串總是被引號包圍。然而,當將輸出列印到主控台螢幕時,並沒有引號符號。這兩者之間顯然有區別。
- 字串字面值:它是寫在原始碼中的字串(包括引號)。
- 字串值:它是列印在輸出上的值(不含引號)。
例如,以下是一個字串字面值:
|
1 |
"hello world" |
它的字串值將會是 hello world.
步驟 6 – 逸出引號與單引號
正如我們所演示的,引號和單引號用於在原始碼中表示字串。這會產生一個問題:您不能直接將它們放在字串中。否則,會導致問題。以下程式碼示範了這一點:
|
1 |
puts 'it's what it is' |
有不同的策略可以規避這個問題。
-
使用替代字串語法
這是解決此問題最簡單的方法。如果您的字串需要單引號,請在字串字面值中使用雙引號(反之亦然)。
讓我們修正上一個範例:
|
1 |
puts "it's what it is" |
另一個範例是:
|
1 |
puts 'he said, "hello world"' |
然而,這並非在所有情況下都有效。例如:
|
1 |
puts "Clousdigma says, "I'm a happy boi!"" |
-
使用逸出字元
反斜線( \)字元通常被稱為逸出字元。它能防止 Ruby 按字面意思解釋下一個字元。讓我們修正上一個範例。使用反斜線來防止 Ruby 將內部的雙引號解釋為字面值:
|
1 |
puts "Cloudsigma 說:\"我是個快樂的男孩!\"" |
-
使用替代語法
到目前為止,我們只使用單引號和雙引號來表示字串字面量。然而,前面的範例簡單演示了這種方式如何快速變得失控。為了解決這個問題,我們可以完全捨棄引號,並使用一個完全不同的符號來表示字串的開頭和結尾。
請看以下範例:
|
1 |
%$這隻 敏捷的 棕色的 狐狸 說, "我跳過了那隻懶狗"$ |
這裡:
-
- 符號 % 定義了下一個字元( $,在此情況下)作為字串的定界符。
- 這裡的字串字面量是 $這隻 敏捷的 棕色的 狐狸 說, "我跳過了那隻懶狗"$.
讓我們實際演練一下:
|
1 |
puts %$這隻 敏捷的 棕色的 狐狸 說, "我跳過了那隻懶狗"$ |
在這裡,該字串基本上被視為以下內容:
|
1 |
"這隻 敏捷的 棕色的 狐狸 說, \"我跳過了那隻懶狗\"" |
然而,如果定界符被用在字串中,這會再次引入轉義定界符的問題。避免此問題的一種方法是使用通常不會出現在字串中的符號。此類符號可以包括大括號、方括號等:
|
1 |
puts %{"你好,世界!", 他 說} |
它也能完美地與字串插值協同工作:
|
1 2 3 |
username = "cloudsigma" user_id = 5 puts %{你好, #{username}.#{user_id}!} |
在 Ruby 程式中,通常也會使用 %Q{} 和 %q{} 來定義字串。在這裡, %Q{} 的作用類似於雙引號,而 %q{} 的作用類似於單引號。
步驟 7 – 換行與長字串
在處理字串時,有時您會希望在字串中引入換行符或歸位鍵。我們可以透過引入轉義字元 \n(換行)和 \r(歸位)來實現。
請看以下範例:
|
1 2 |
hello_world = "敏捷的\n棕色狐狸\n跳過\n那隻懶狗" puts hello_world |
這個字串字面量看起來很令人困惑,對吧?讓我們重新排列它以獲得更好的可讀性:
|
1 2 3 4 5 6 7 |
hello_world = "敏捷的\n" + "棕色狐狸\n" + "跳過\n" + "那隻懶狗" puts hello_world |
除了手動宣告換行字元之外,我們也可以使用以下結構:
|
1 2 3 4 5 6 |
hello_world = "敏捷的 棕色狐狸 跳過 那隻懶狗" puts hello_world |
在這種方法中,字串會保留所有的空格。然而,這會使輸出變得混亂。刪除多餘的空格以修正此問題:
|
1 2 3 4 5 |
hello_world = "敏捷的 棕色狐狸 跳過 那隻懶狗" |
雖然空格問題得到了解決,但它降低了程式碼的可讀性。我們可以透過實作 heredoc(多行字串字面量的術語)來解決此問題。更新後的程式碼如下所示:
|
1 2 3 4 5 6 7 8 |
hello_world = <<-END 這隻 敏捷的 棕色 狐狸 跳 過 那隻 懶惰的 狗 END puts hello_world |
從 Ruby v2.3 及以上版本開始,還提供了另一個功能,稱為 波浪形 heredoc 語法。它會移除字串中的前導空格。要表示 波浪形 heredoc,請將連字號( -)替換為波浪號( ~):
|
1 2 3 4 5 6 7 8 |
hello_world = <<~END the quick brown fox jumps over the lazy dog END puts hello_world |
步驟 8 – 重複字串
在某些情況下,可能需要將字串重複多次。Ruby 允許以多種方式重複字串。
其中一種技術是使用 * 運算子。通常,在處理數字時,它被用作乘法運算子。然而,在處理字串時,它會變成 字串重複運算子,根據需要重複單個字串多次。重複的次數必須是整數。
在以下範例中,文字 Boris 將會被重複 5 次:
|
1 |
print "Boris" * 5 + "\n" |
利用這個特性,我們可以製作一些酷炫的 ASCII 藝術。請看以下範例:
|
1 2 3 |
puts "=" * 15 puts "| hello world |" puts "=" * 15 |
結語
在程式設計中,字串是不可或缺的。本指南示範了在 Ruby 中如何處理字串。我們學習了如何建立字串並執行各種操作,例如串接、處理換行符、引號等。透過字串插值,我們還學習了如何更好地將變數值整合到字串中。使用字串重複運算子,我們還可以將單個字串重複多次。
雖然 Ruby 本身是一個優秀的程式語言,但它經常與 Rails 框架結合使用。Ruby on Rails 是一個開源的網頁應用程式框架。了解更多關於安裝 Ubuntu 上的 Ruby on Rails 的資訊。然而,Ruby 也可以與其他應用程式協同工作,例如 MySQL 和 PostgreSQL.
祝您編程愉快!












































留言
目前尚無留言。成為第一個留言的人吧。