Go語言string包詳解


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

查找操作

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

func Contains(s, substr string) bool

實例如下:

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("蔣春生", "春生"))
}

運行結果:

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

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

func Index(s, sep string) int

實例如下:

package main

import (
    "fmt"
    "strings"
)

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

運行結果:

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

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

func Count(s, sep string) int

實例如下:

package main

import (
    "fmt"
    "strings"
)

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

運行結果:

子字符串出現次數: 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM