返回部落格

在 Ruby 中處理字串

在 Ruby 中處理字串

Ruby 是一種直譯式、動態、反射式的 物件導向 程式語言。由松本行弘(Yukihiro Matsumoto)開發,Ruby 專注於簡潔與高效。其優雅的語法讓開發人員更容易閱讀和編寫程式碼。

在本指南中,我們將在 Ruby 中處理字串.

先決條件

要執行本教學中示範的步驟,您需要以下組件:

字串資料類型

在程式設計中,字串 是一種每種現代程式語言都支援的常見資料類型。它的特點是一串字元序列。整個字元序列被視為單一資料。字串可以包含字母、數字和特殊字元/符號。

Ruby 作為一種純物件導向的程式語言,將字串視為物件。與許多其他語言不同,Ruby 中的字串是可變的(mutable)。基本上,字串的值可以就地(in-place)更改。

步驟 1 – 建立與列印字串

在 Ruby 中,字串可以用單引號( ')或雙引號( ")包圍。以下是 Ruby 中兩個有效的字串:

要在主控台螢幕上列印任何輸出,Ruby 提供了 print 方法:

是時候付諸行動了。建立一個新的 Ruby 檔案 practice.rb 並輸入以下程式碼:

執行程式碼:

Strings in Ruby 1

正如預期, print 指令會列印提供的字串。如果我們想在不同的行上列印字串,最好改用 puts 。更新程式碼:

接下來,再次執行程式碼:

Strings in Ruby 2

步驟 2 – 字串變數

變數 是指指向電腦記憶體中儲存特定值之位置的名稱。我們可以將所需的值儲存在變數中,並在稍後使用。

在 Ruby 中,要宣告字串變數,請定義變數名稱並指派字串值:

practice.rb 中寫入以下程式碼::

執行程式碼:

在這裡:

  • 我們已經定義了兩個變數 first_halfsecond_half,每個都指派了一個字串值。
  • puts 方法會列印變數的值。

步驟 3 – 字串串接

透過串接,我們可以將多個字串組合在一起以建立一個新字串。字串串接由串接運算子( +)表示。請注意,在進行算術運算時,此符號也是加法運算子。

讓我們嘗試對目前宣告的字串進行字串串接:

執行程式碼:

如輸出所示,串接不會在字串之間引入任何額外字元。這就是為什麼 foxjumps 被擠在一起。我們可以透過在 之後引入空格來解決此問題:fox:

執行程式碼:

現在輸出看起來好多了。

字串串接也適用於變數。請看以下範例:

Strings in Ruby 3

執行程式碼:

下一個範例示範了長鏈的字串串接:

Strings in Ruby 4

執行程式碼:

到目前為止,我們只處理了字串變數。如果有不同的變數類型會怎麼樣?以下程式測試了這種情境:

Strings in Ruby 5

當嘗試執行此程式時,Ruby 將會拋出錯誤訊息:

然而,我們可以將整數轉換為字串以避免此問題:

Strings in Ruby 6

這裡:

  • 此方法 to_s 會將變數值轉換為字串。

在處理郵遞區號、貨幣、電話號碼和其他數值資料等元素時,將數字轉換為字串是常見的情況。

步驟 4 – 字串插值

雖然字串串接是一個強大的功能,但它很容易變得棘手。在許多情況下,您可能會發現自己漏掉了串接運算子( +),從而導致令人頭痛的問題。此外,在處理不同的資料類型時,必須先將其轉換為字串。幸好,Ruby 提供了其他方法,可以使用此功能將變數值注入到字串中:字串插值.

它看起來像這樣。例如,與其使用:

我們將使用:

雖然語法看起來可能有點奇怪,但它極大地簡化了程式碼。無需手動呼叫 to_s 方法來將變數值轉換為字串。

讓我們使用這個新技術來更新我們之前的程式碼:

Strings in Ruby 7

執行程式碼:

步驟 5 – 字串字面值與字串值

請注意,在程式碼中宣告的字串總是被引號包圍。然而,當將輸出列印到主控台螢幕時,並沒有引號符號。這兩者之間顯然有區別。

  • 字串字面值:它是寫在原始碼中的字串(包括引號)。
  • 字串值:它是列印在輸出上的值(不含引號)。

例如,以下是一個字串字面值:

它的字串值將會是 hello world.

步驟 6 – 逸出引號與單引號

正如我們所演示的,引號和單引號用於在原始碼中表示字串。這會產生一個問題:您不能直接將它們放在字串中。否則,會導致問題。以下程式碼示範了這一點:

Strings in Ruby 8

有不同的策略可以規避這個問題。

  • 使用替代字串語法

這是解決此問題最簡單的方法。如果您的字串需要單引號,請在字串字面值中使用雙引號(反之亦然)。

讓我們修正上一個範例:

另一個範例是:

然而,這並非在所有情況下都有效。例如:

  • 使用逸出字元

反斜線( \)字元通常被稱為逸出字元。它能防止 Ruby 按字面意思解釋下一個字元。讓我們修正上一個範例。使用反斜線來防止 Ruby 將內部的雙引號解釋為字面值:

  • 使用替代語法

到目前為止,我們只使用單引號和雙引號來表示字串字面量。然而,前面的範例簡單演示了這種方式如何快速變得失控。為了解決這個問題,我們可以完全捨棄引號,並使用一個完全不同的符號來表示字串的開頭和結尾。

請看以下範例:

這裡:

    • 符號 % 定義了下一個字元( $,在此情況下)作為字串的定界符。
    • 這裡的字串字面量是 $這隻 敏捷的 棕色的 狐狸 , "我跳過了那隻懶狗"$.

讓我們實際演練一下:

在這裡,該字串基本上被視為以下內容:

然而,如果定界符被用在字串中,這會再次引入轉義定界符的問題。避免此問題的一種方法是使用通常不會出現在字串中的符號。此類符號可以包括大括號、方括號等:

它也能完美地與字串插值協同工作:

在 Ruby 程式中,通常也會使用 %Q{}%q{} 來定義字串。在這裡, %Q{} 的作用類似於雙引號,而 %q{} 的作用類似於單引號。

步驟 7 – 換行與長字串

在處理字串時,有時您會希望在字串中引入換行符或歸位鍵。我們可以透過引入轉義字元 \n(換行)和 \r(歸位)來實現。

請看以下範例:

這個字串字面量看起來很令人困惑,對吧?讓我們重新排列它以獲得更好的可讀性:

除了手動宣告換行字元之外,我們也可以使用以下結構:

Strings in Ruby 8

Strings in Ruby 9

在這種方法中,字串會保留所有的空格。然而,這會使輸出變得混亂。刪除多餘的空格以修正此問題:

Strings in Ruby 10

雖然空格問題得到了解決,但它降低了程式碼的可讀性。我們可以透過實作 heredoc(多行字串字面量的術語)來解決此問題。更新後的程式碼如下所示:

Strings in Ruby 11

Strings in Ruby 12

從 Ruby v2.3 及以上版本開始,還提供了另一個功能,稱為 波浪形 heredoc 語法。它會移除字串中的前導空格。要表示 波浪形 heredoc,請將連字號( -)替換為波浪號( ~):

Strings in Ruby 13

步驟 8 – 重複字串

在某些情況下,可能需要將字串重複多次。Ruby 允許以多種方式重複字串。

其中一種技術是使用 * 運算子。通常,在處理數字時,它被用作乘法運算子。然而,在處理字串時,它會變成 字串重複運算子,根據需要重複單個字串多次。重複的次數必須是整數。

在以下範例中,文字 Boris 將會被重複 5 次:

Strings in Ruby 14

利用這個特性,我們可以製作一些酷炫的 ASCII 藝術。請看以下範例:

結語

在程式設計中,字串是不可或缺的。本指南示範了在 Ruby 中如何處理字串。我們學習了如何建立字串並執行各種操作,例如串接、處理換行符、引號等。透過字串插值,我們還學習了如何更好地將變數值整合到字串中。使用字串重複運算子,我們還可以將單個字串重複多次。

雖然 Ruby 本身是一個優秀的程式語言,但它經常與 Rails 框架結合使用。Ruby on Rails 是一個開源的網頁應用程式框架。了解更多關於安裝 Ubuntu 上的 Ruby on Rails 的資訊。然而,Ruby 也可以與其他應用程式協同工作,例如 MySQLPostgreSQL.

祝您編程愉快!

author

Preslav Dobrev

作者 · CloudSigma

Preslav Dobrev 是 CloudSigma 的創意設計師,專注於透過傳統與創新行銷渠道建立一致的企業形象。他擅長將藝術願景與策略行銷相融合,創造具有影響力的品牌敘事。

留言

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