高中情人

高中情人

學習練習

簡介

String有許多方法可以用來操作字串。這些方法會直接在字串本身呼叫,而且經常串接在一起,對同一個字串執行多個操作。

以下列出一些最常用的方法。 完整的清單請參閱 String API 文件。

String#upcase & String#downcase

upcase方法會回傳一個新字串,其中所有字元都轉換成大寫。

"hello".upcase
# => "HELLO"

downcase方法會回傳一個新字串,其中所有字元都轉換成小寫。

"HELLO".downcase
# => "hello"

String#sub & String#gsub

Crystal 提供了替換字串部分內容的方法, 分別是 sub(替換)與 gsub(全域替換)。

這些方法的第一個引數可以是字串、字元或正規表達式,第二個引數可以是字串或字元。 第一個引數是要被替換的字串部分,第二個引數則是替換的內容。 Char 和正規表達式會在之後的概念中說明。

sub 方法會把第一個出現的第一個引數替換成第二個引數。

"hello".sub("l", "r")
# => "herlo"

gsub 方法的作用和 sub 相同,但會把所有出現的第一個引數都替換成第二個引數。

"hello".gsub("l", "r")
# => "herro"

String#chomp & String#strip

chomp 和 strip 可以用來移除字串中不需要的字元。

chomp方法預設會移除字串結尾的 \r、\n 或 \r\n 字元。 如果呼叫這個方法時帶有引數,它會從字串結尾移除指定的值, 前提是該值確實出現在字串結尾。

"hello\n".chomp
# => "hello"

"hello".chomp("llo")
# => "he"

strip方法預設會移除字串開頭和結尾的所有空白。 如果呼叫這個方法時帶有引數,它會從字串開頭和結尾移除該引數, 前提是該引數確實出現在開頭或結尾。

" hello ".strip
# => "hello"

String#index

index方法可以用來找出某個字元在字串中的索引。 index 方法接受 String、Char 或正規表達式作為引數。 它也可以接受一個選用的第二引數,指定要從哪個索引開始搜尋。 index 方法會回傳引數第一次出現的索引。

"hello".index("l")
# => 2

"hello".index("l", 3)
# => 3

String#delete_at

你可以用 delete_at方法從字串中移除一個字元。 delete_at 方法接受一個索引作為引數,並移除該索引上的字元。

"hello".delete_at(0)
# => "ello"

"hello".delete_at(3)
# => "helo"

String#insert

insert方法可以用來在指定的索引插入一個字串。 insert 方法的第一個引數是索引,第二個引數是字串。 insert 方法會回傳一個新字串,其中第二個引數已插入到該索引的位置。

"hello".insert(0, "h")
# => "hhello"

"hello".insert(3, "l")
# => "helllo"

說明

在這個練習中,你要幫助高中情侶在社群媒體上表達愛意,用他們的姓名縮寫產生一個 ASCII 愛心:

❤ J.  +  M. ❤

1. 清理名字

實作HighSchoolSweetheart.clean_up_name方法。 它應該接收一個名字,移除其中所有的-字元並以空格取代。 它還應該移除名字開頭和結尾的任何空白。

HighSchoolSweetheart.clean_up_name("Jane-Ann")
# => "Jane Ann"

2. 取得名字的第一個字母

實作HighSchoolSweetheart.first_letter方法。 它應該接收一個名字並回傳它的第一個字母。 記得重複使用你在前一步定義的HighSchoolSweetheart.clean_up_name。

HighSchoolSweetheart.first_letter("Jane")
# => "J"

3. 將第一個字母格式化為姓名縮寫

實作HighSchoolSweetheart.initial方法。 它應該接收一個名字,回傳它的第一個字母,轉成大寫,後面加上一個句點。 記得重複使用你在前一步定義的HighSchoolSweetheart.first_letter。

HighSchoolSweetheart.initial("Robert")
# => "R."

4. 把姓名縮寫放進愛心裡

實作HighSchoolSweetheart.pair方法。 它應該接收兩個名字,回傳前後帶有愛心表情符號的姓名縮寫。 記得重複使用你在前一步定義的HighSchoolSweetheart.initial。

HighSchoolSweetheart.pair("Blake Miller", "Riley Lewis")
# => "❤ B.  +  R. ❤"
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Crystal Exercism

準備好開始 高中情人 了嗎?

註冊 Exercism,透過 26 個概念142 個練習 和真人引導來學習並精通 Crystal,全部免費。