golang基礎學習---字串
阿新 • • 發佈:2018-11-25
Go語言支援以下2種形式的字串:
-
解釋性字串:帶引號的位元組序列。該類字串使用雙引號括起來,其中的相關的轉義字元將被替換。例如:
str := "laoYu"
-
原生字串: 該類字串使用反引號(注意:不是單引號)括起來,支援換行。例如:
This is a raw string \n
上面原生字串中的 \n 會被原樣輸出。
獲取字串長度可以用內建的函式len。
字串函式包
strings 包提供了很多操作字串的簡單函式,通常一般的字串操作需求都可以在這個包中找到。
下面簡單舉幾個例子:
判斷是否以某字串打頭/結尾 strings.HasPrefix(s, prefix string) bool strings.HasSuffix(s string, suffix string) bool 字串分割 strings.Split(s string, sep string) []string 返回子串索引 strings.Index(s string, sub string) int strings.LastIndex 最後一個匹配索引 字串連線 strings.Join(a []string, sep string) string 另外可以直接使用“+”來連線兩個字串 字串替換 strings.Replace(s, old, new string, n int) string 字串轉化為大小寫 strings.ToUpper(s string) string strings.ToLower(s string) string 統計某個字元在字串出現的次數 strings.Count(s string, sep string) int 判斷字串的包含關係 strings.Contains(s, substr string) bool
strconv 包提供了基本資料型別和字串之間的轉換。在 Go 中,沒有隱式型別轉換,一般的型別轉換可以這麼做:int32(i),將 i (比如為 int 型別)轉換為 int32,然而,字串型別和 int、float、bool 等型別之間的轉換卻沒有這麼簡單。
與字串相關的型別轉換都是通過 strconv 包實現的。
針對從數字型別轉換到字串,Go 提供了以下函式:
- strconv.Itoa(i int) string
返回數字 i 所表示的字串型別的十進位制數。
示例
package main import( "fmt" "strings" "strconv" ) func main() { str01 :=`This is a raw string \n` //原生字串 str02 :="This is a raw string \n"//引用字串 fmt.Println("原生字串和引用字串的區別") fmt.Printf(str01) fmt.Println("") fmt.Printf(str02) fmt.Println("") fmt.Println("+連線字串") var str03 string = str01 +str02 fmt.Printf(str03) fmt.Println("") var str string = "This is an example of a string" fmt.Println("HasPrefix 函式的用法") fmt.Printf("T/F? Does the string \"%s\"have prefix %s? ", str, "Th") //字首 fmt.Printf("%t\n", strings.HasPrefix(str, "Th\n")) fmt.Println("") fmt.Println("Contains 函式的用法") fmt.Println(strings.Contains("seafood", "foo")) //true fmt.Println(strings.Contains("seafood", "bar")) //false fmt.Println("Count 函式的用法") fmt.Println(strings.Count("cheese", "e")) // 3 fmt.Println(strings.Count("five", "")) fmt.Println("") fmt.Println("Index 函式的用法") fmt.Println(strings.IndexRune("NLT_abc", 'b')) // 返回第一個匹配字元的位置,這裡是4 fmt.Println(strings.IndexRune("NLT_abc", 's')) // 在存在返回 -1 fmt.Println(strings.IndexRune("我是中國人", '中')) // 在存在返回 6 fmt.Println("") fmt.Println("Join 函式的用法") s := []string{"foo", "bar", "baz"} fmt.Println(strings.Join(s, ", ")) // 返回字串:foo, bar, baz fmt.Println("") fmt.Println("LastIndex 函式的用法") fmt.Println(strings.LastIndex("go gopher", "go")) // 3 fmt.Println("") fmt.Println("Replace 函式的用法") fmt.Println(strings.Replace("oink oink oink", "k", "ky", 2)) fmt.Println(strings.Replace("oink oink oink", "oink", "moo", -1)) fmt.Println("") fmt.Println("Split 函式的用法") fmt.Printf("%q\n", strings.Split("a,b,c", ",")) fmt.Printf("%q\n", strings.Split("a man a plan a canal panama", "a ")) fmt.Printf("%q\n", strings.Split(" xyz ", "")) fmt.Printf("%q\n", strings.Split("", "Bernardo O'Higgins")) fmt.Println("") fmt.Println("ToLower 函式的用法") fmt.Println(strings.ToLower("Gopher")) //gopher fmt.Println("") fmt.Println("strconv.Itoa()函式用法") var an int = 6 newS := strconv.Itoa(an) fmt.Printf("The new string is: %s\n", newS) }