String有許多方法可以用來操作字串。這些方法會直接在字串本身呼叫,而且經常串接在一起,對同一個字串執行多個操作。
以下列出一些最常用的方法。
完整的清單請參閱 String API 文件。
upcase方法會回傳一個新字串,其中所有字元都轉換成大寫。
"hello".upcase
# => "HELLO"
downcase方法會回傳一個新字串,其中所有字元都轉換成小寫。
"HELLO".downcase
# => "hello"
Crystal 提供了替換字串部分內容的方法,
分別是 sub(替換)與 gsub(全域替換)。
這些方法的第一個引數可以是字串、字元或正規表達式,第二個引數可以是字串或字元。
第一個引數是要被替換的字串部分,第二個引數則是替換的內容。
Char 和正規表達式會在之後的概念中說明。
sub 方法會把第一個出現的第一個引數替換成第二個引數。
"hello".sub("l", "r")
# => "herlo"
gsub 方法的作用和 sub 相同,但會把所有出現的第一個引數都替換成第二個引數。
"hello".gsub("l", "r")
# => "herro"
chomp 和 strip 可以用來移除字串中不需要的字元。
chomp方法預設會移除字串結尾的 \r、\n 或 \r\n 字元。
如果呼叫這個方法時帶有引數,它會從字串結尾移除指定的值,
前提是該值確實出現在字串結尾。
"hello\n".chomp
# => "hello"
"hello".chomp("llo")
# => "he"
strip方法預設會移除字串開頭和結尾的所有空白。
如果呼叫這個方法時帶有引數,它會從字串開頭和結尾移除該引數,
前提是該引數確實出現在開頭或結尾。
" hello ".strip
# => "hello"
index方法可以用來找出某個字元在字串中的索引。
index 方法接受 String、Char 或正規表達式作為引數。
它也可以接受一個選用的第二引數,指定要從哪個索引開始搜尋。
index 方法會回傳引數第一次出現的索引。
"hello".index("l")
# => 2
"hello".index("l", 3)
# => 3
你可以用 delete_at方法從字串中移除一個字元。
delete_at 方法接受一個索引作為引數,並移除該索引上的字元。
"hello".delete_at(0)
# => "ello"
"hello".delete_at(3)
# => "helo"
insert方法可以用來在指定的索引插入一個字串。
insert 方法的第一個引數是索引,第二個引數是字串。
insert 方法會回傳一個新字串,其中第二個引數已插入到該索引的位置。
"hello".insert(0, "h")
# => "hhello"
"hello".insert(3, "l")
# => "helllo"
在這個練習中,你要幫助高中情侶在社群媒體上表達愛意,用他們的姓名縮寫產生一個 ASCII 愛心:
❤ J. + M. ❤
實作HighSchoolSweetheart.clean_up_name方法。
它應該接收一個名字,移除其中所有的-字元並以空格取代。
它還應該移除名字開頭和結尾的任何空白。
HighSchoolSweetheart.clean_up_name("Jane-Ann")
# => "Jane Ann"
實作HighSchoolSweetheart.first_letter方法。
它應該接收一個名字並回傳它的第一個字母。
記得重複使用你在前一步定義的HighSchoolSweetheart.clean_up_name。
HighSchoolSweetheart.first_letter("Jane")
# => "J"
實作HighSchoolSweetheart.initial方法。
它應該接收一個名字,回傳它的第一個字母,轉成大寫,後面加上一個句點。
記得重複使用你在前一步定義的HighSchoolSweetheart.first_letter。
HighSchoolSweetheart.initial("Robert")
# => "R."
實作HighSchoolSweetheart.pair方法。
它應該接收兩個名字,回傳前後帶有愛心表情符號的姓名縮寫。
記得重複使用你在前一步定義的HighSchoolSweetheart.initial。
HighSchoolSweetheart.pair("Blake Miller", "Riley Lewis")
# => "❤ B. + R. ❤"