Go語言string包詳解

strings包實現了用於操做字符的簡單函數。app

查找操做

判斷給定字符串s中是否包含子串substr, 找到返回true, 找不到返回false函數

func Contains(s, substr string) bool

實例以下:spa

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println("包含子串返回:", strings.Contains("oldboy", "boy"))
    fmt.Println("不包含子串返回:", strings.Contains("oldboy", "girl"))
    fmt.Println("子字符串是空字符串返回:", strings.Contains("oldboy", ""))
    fmt.Println("原字符串、子字符串都是空字符串返回:", strings.Contains("1", "1"))
    fmt.Println("中文字符串包含子串返回:", strings.Contains("蔣春生", "春生"))
}

運行結果:code

包含子串返回: true
不包含子串返回: false
子字符串是空字符串返回: true
原字符串、子字符串都是空字符串返回: true
中文字符串包含子串返回: true

在字符串s中查找sep所在的位置, 返回位置值, 找不到返回-1orm

func Index(s, sep string) int

實例以下:blog

package main

import (
    "fmt"
    "strings"
)

func main() {
fmt.Println("存在返回第一個匹配字符的位置:", strings.Index("oldboy", "boy"))
fmt.Println("不存在返回:", strings.Index("oldboy", "girl"))
fmt.Println("中文字符串存在返回:", strings.Index("蔣春生", "春生"))
 }

運行結果:ci

存在返回第一個匹配字符的位置: 3
不存在返回: -1
中文字符串存在返回: 3

統計給定子串sep的出現次數, sep爲空時, 返回字符串的長度 + 1unicode

func Count(s, sep string) int

實例以下:字符串

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println("子字符串出現次數:", strings.Count("oldboy", "o"))
    fmt.Println("子字符串爲空時, 返回:", strings.Count("oldboy", ""))
}

運行結果:string

子字符串出現次數: 2
子字符串爲空時, 返回: 7

重複操做

重複s字符串count次, 最後返回新生成的重複的字符串

func Repeat(s string, count int) string

實例以下:

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.Repeat("嘀嗒", 4), "時針它不停在轉動")
}

運行結果:

嘀嗒嘀嗒嘀嗒嘀嗒 時針它不停在轉動

替換操做

在s字符串中, 把old字符串替換爲new字符串,n表示替換的次數,若是n<0會替換全部old子串。

func Replace(s, old, new string, n int) string

實例以下:

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.Replace("luck luck luck", "k", "ky", 2))
    fmt.Println(strings.Replace("luck luck luck", "k", "ky", -1))
}

運行結果:

lucky lucky luck
lucky lucky lucky

刪除操做

刪除在s字符串的頭部和尾部中由cutset指定的字符, 並返回刪除後的字符串

func Trim(s string, cutset string) string

實例以下:

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.Trim("   oldboy   ", " "))
}

運行結果:

oldboy

大小寫轉換

給定字符串轉換爲英文標題的首字母大寫的格式(不能正確處理unicode標點)

func Title(s string) string

返回將全部字母都轉爲對應的小寫版本的拷貝

func ToLower(s string) string

返回將全部字母都轉爲對應的大寫版本的拷貝

func ToUpper(s string) string

實例以下:

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.Title("It is never too late to learn."))
    fmt.Println(strings.ToLower("It Is Never Too Late To Learn."))
    fmt.Println(strings.ToUpper("It is never too late to learn."))
}

運行結果:

It Is Never Too Late To Learn.
it is never too late to learn.
IT IS NEVER TOO LATE TO LEARN.

字符串前綴後綴

判斷字符串是否包含前綴prefix,大小寫敏感

func HasPrefix(s, prefix string) bool

判斷s是否有後綴字符串suffix,大小寫敏感

func HasSuffix(s, suffix string) bool

實例以下:

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println("前綴是以old開頭的:", strings.HasPrefix("oldboy", "old"))
    fmt.Println("後綴是以boy開頭的:", strings.HasSuffix("oldboy", "boy"))
}

運行結果:

前綴是以old開頭的: true
後綴是以boy開頭的: true

字符串分割

用去掉s中出現的sep的方式進行分割,會分割到結尾,並返回生成的全部片斷組成的切片(每個sep都會進行一次切割,即便兩個sep相鄰,也會進行兩次切割)。若是sep爲空字符,Split會將s切分紅每個unicode碼值一個字符串。

func Split(s, sep string) []string

返回將字符串按照空白(unicode.IsSpace肯定,能夠是一到多個連續的空白字符)分割的多個字符串。若是字符串所有是空白或者是空字符串的話,會返回空切片。

func Fields(s string) []string

實例以下:

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println("Split 函數的用法")
    fmt.Printf("%q\n", strings.Split("Linux,Python,Golang,Java", ","))
    fmt.Printf("%q\n", strings.Split("a mountain a temple", "a "))
    fmt.Printf("%q\n", strings.Split(" abc ", ""))
    fmt.Printf("%q\n", strings.Split("", "oldboy"))
    fmt.Println("Fields 函數的用法")
    fmt.Printf("Fields are: %q\n", strings.Fields(" Linux Python Golang  Java "))
}

運行結果:

Split 函數的用法
["Linux" "Python" "Golang" "Java"]
["" "mountain " "temple"]
[" " "a" "b" "c" " "]
[""]
Fields 函數的用法
Fields are: ["Linux" "Python" "Golang" "Java"]

 

func Split(s, sep string) []string

相關文章
相關標籤/搜索