Go 中的string是不可變的位元組序列,這些位元組不一定要代表字元。
字串常值定義在雙引號之間:
const name = "Jane"
字串可以用+運算子串接起來:
"Jane" + " " + "Austen"
// => "Jane Austen"
有些特殊字元需要用前置的反斜線跳脫,例如字串中的\t代表定位字元,\n代表換行。
"How is the weather today?\nIt's sunny"
// =>
// How is the weather today?
// It's sunny
strings套件裡有許多處理字串的實用函式。
想進一步了解字串相關的函式,可以參考 strings 套件文件。
以下是一些例子:
import "strings"
// strings.ToLower returns the string given as argument with all its characters lowercased
strings.ToLower("MaKEmeLoweRCase")
// => "makemelowercase"
// strings.Repeat returns a string with a substring given as argument repeated many times
strings.Repeat("Go", 3)
// => "GoGoGo"
附近有一間叫做「Tech Palace」的電器行。店主最近安裝了一塊大型顯示器,用來播放行銷訊息,並在顧客於入口掃描會員卡時顯示特別的問候語。這塊顯示器由許多小型 LED 燈組成,可以顯示多行文字。
店主需要你協助撰寫用來產生這塊新顯示器文字內容的程式碼。
對於大多數掃描會員卡的顧客,店主希望顯示器上顯示"Welcome to the Tech Palace,",後面接著以大寫字母呈現的顧客姓名。
請實作函式WelcomeMessage,它接受顧客的姓名作為string引數,並以string回傳想要的訊息。
WelcomeMessage("Judy")
// => Welcome to the Tech Palace, JUDY
對於在店裡消費很多的忠實顧客,店主希望透過在歡迎訊息前後各加上一行星星,讓歡迎畫面更花俏。他們還不確定每行應該要有幾顆星星,所以希望這個數量可以自行設定。
請撰寫函式AddBorder,它接受歡迎訊息(string)和每行的星星數量(型別int)作為引數。它應該回傳一個由 3 行組成的string:一行包含指定數量的星星,接著是原本傳入的歡迎訊息,最後再一行星星。
AddBorder("Welcome!", 10)
應該回傳以下內容:
**********
Welcome!
**********
在安裝這塊新顯示器之前,店裡有一塊類似的顯示器,只能顯示無法設定、固定不變的文字行。店主希望在新顯示器上重複使用一些舊的行銷訊息。不過,這些資料已經包含了星星邊框,還有一些多餘的空白字元。你的任務就是把這些訊息清理乾淨,讓它們可以再次使用。
請實作函式CleanUpMessage,它接受舊的行銷訊息作為字串。這個函式應該先移除文字中所有的星星,接著再移除剩餘文字開頭與結尾的空白字元,然後回傳清理後的訊息。
message := `
**************************
* BUY NOW, SAVE 10% *
**************************
`
CleanUpMessage(message)
// => BUY NOW, SAVE 10%