這篇文章主要介紹了Go語言中strings和strconv包示例代碼詳解 ,非常不錯,具有一定的參考借鑑價值,需要的朋友可以參考下
前綴和後綴
HasPrefix判斷字符串s是否以prefix開頭:
strings.HaxPrefix(s string, prefix string) bool
示例:
package main import ( "fmt" "strings" ) func main() { pre := "Thi" str1 := "This is a Go program!" fmt.Println(strings.HasPrefix(str1, pre)) }
HasSuffix 判斷字符串 s 是否以 suffix 結尾:
strings.HasSuffix(s string, suffix string) bool
示例:
package main import ( "fmt" "strings" ) func main() { suffix := "am!" str1 := "This is a Go program!" fmt.Println(strings.HasSuffix(str1, suffix)) }
字符串包含關係
Contains 判斷字符串 s 是否包含 substr :
strings.Contains(s string, substr string) bool
示例:
package main import ( "fmt" "strings" ) func main() { substr := "is" str1 := "This is a Go program!" fmt.Println(strings.Contains(str1, substr)) }
判斷子字符串或字符在父字符串中出現的位置(索引)
Index 返回字符串 substr 在字符串 s 中的索引( substr 的第一個字符的索引),-1 表示字符串 s 不包含字符串 substr :
strings.Index(s string, sbustr string) int
示例:
package main import ( "fmt" "strings" ) func main() { substr := "is" substr2 := "Hi" str1 := "This is a Go program!" fmt.Println(strings.Index(str1, substr)) //輸出2 fmt.Println(strings.Index(str1, substr2))//輸出-1 }
LastIndex 返回字符串 substr 在字符串 s 中最後出現位置的索引( substr 的第一個字符的索引),-1 表示
字符串 s 不包含字符串 substr :
strings.LastIndex(s string, substr string) int
語法:
package main import ( "fmt" "strings" ) func main() { substr := "is" substr2 := "Hi" str1 := "This is a Go program!" fmt.Println(strings.LastIndex(str1, substr)) //輸出5 fmt.Println(strings.LastIndex(str1, substr2))//輸出-1 }
如果 r 是非 ASCII 編碼的字符,建議使用以下函數來對字符進行定位:
strings.IndexRune(s string, r rune) int
示例
package main import ( "fmt" "strings" ) func main() { substr := '中' substr2 := '天' str1 := "我愛你中國" fmt.Println(strings.IndexRune(str1, substr)) //輸出9 fmt.Println(strings.IndexRune(str1, substr2))//輸出-1 } package main import ( "fmt" "strings" ) func main() { substr := "中" substr2 := "天" str1 := "我愛你𤋮中國" //常見的漢字在utf8中佔3個字節,某些特殊的漢字(如𤋮)在utf8中佔四個字節,所以輸出結果是13而不是12 fmt.Println(strings.Index(str1, substr)) //輸出13 fmt.Println(strings.Index(str1, substr2))//輸出-1 }
字符串替換
Replace 用於將字符串s 中的前 n 個字符串 old 替換爲字符串 new ,並返回一個新的字符串,如果 n = -1 則替換所有字符串 old 爲字符串 new :
strings.Replace(s string, old string, new string, n int) string
示例:
package main import ( "fmt" "strings" ) func main() { str1 := "我愛你熙中國熙" fmt.Println(strings.Replace(str1, "熙", "", 1)) //我愛你中國熙 fmt.Println(strings.Replace(str1, "熙", "", -1)) //我愛你中國 }
統計字符串出現次數
Count 用於計算字符串 substr 在字符串 s 中出現的非重疊次數:
strings.Count(s string, substr string) int
示例:
package main import ( "fmt" "strings" ) func main() { substr := "is" s := "This is a go program!" fmt.Println(strings.Count(s, substr)) //2 }
重複字符串
Repeat 用於重複 count 次字符串 s 並返回一個新的字符串:
strings.Repeat(s string, count int) string
示例:
package main import ( "fmt" "strings" ) func main() { s := "This is a go program!" fmt.Println(strings.Repeat(s, 2)) //This is a go program!This is a go program! }
修改字符串大小寫
ToLower 將字符串中的 Unicode 字符全部轉換爲相應的小寫字符:
strings.ToLower(s string) string
ToUpper 將字符串中的 Unicode 字符全部轉換爲相應的大寫字符:
strings.ToUpper(s string) string
示例:
package main import ( "fmt" "strings" ) func main() { s := "This is a Go program!" fmt.Println(strings.ToLower(s)) //this is a go program! fmt.Println(strings.ToUpper(s)) //THIS IS A GO PROGRAM! }
修剪字符串
你可以使用 strings.TrimSpace(s)
來剔除字符串開頭和結尾的空白符號;如果你想要剔除指定字符,則可以使用 strings.Trim(s,cutset)
來將開頭和結尾的 cutset 去除掉。該函數的第二個參數可以包含任何字符,如果你只想剔除開頭或者結尾的字符串,則可以使用 TrimLeft 或者 TrimRight 來實現。
去除字符串s左右兩側的空格:
strings.TrimSpace(s string) string
示例:
package main import ( "fmt" "strings" ) func main() { s := " ThisThis is a Go program!This " fmt.Println(s) //原生打印 fmt.Println(strings.TrimSpace(s)) //剔除空格後的字符串 }
去除開頭或結尾的字符串:
strings.Trim(s string cutset string) string strings.TrimLeft(s string, cutset string) string strings.TrumRight(s string, cutset string) string
示例:
package main import ( "fmt" "strings" ) func main() { s := "ThisThis is a Go program!This" fmt.Println(strings.Trim(s, "This")) // is a Go program! fmt.Println(strings.TrimLeft(s, "This"))//is a Go program!This fmt.Println(strings.TrimRight(s, "This"))//ThisThis is a Go program! }
分割字符串
strings.Fields(s) 將會利用1個或多個空白符號來作爲動態長度的分隔符將字符串分割成若干小塊,並返
回一個 slice,如果字符串只包含空白符號,則返回一個長度爲 0 的 slice。
strings.Fields(s string) []string
示例:
package main import ( "fmt" "strings" ) func main() { s := "This is a Go program!" fmt.Printf("%v\n", strings.Fields(s)) //[This is a Go program!] }
strings.Split(s,sep)用於自定義分割符號來對指定字符串進行分割,同樣返回slice。
因爲這 2 個函數都會返回 slice,所以習慣使用 for-range 循環來對其進行處理
strings.Split(s string, sep string) []string
示例:
package main import ( "fmt" "strings" ) func main() { s := "This is a Go program!" result := strings.Split(s, "Go") fmt.Printf("%v\n", result) //[This is a program!] for _, value := range result { fmt.Printf("%s\n", value) } }
拼接slice到字符串
Join 用於將元素類型爲 string 的 slice 使用分割符號來拼接組成一個字符串:
strings.Join(a []string, sep string) string
示例:
package main import ( "fmt" "strings" ) func main() { var s []string = []string{"I", "love", "you"} fmt.Println(strings.Join(s, " ")) //I love you }
從字符串中讀取內容
函數 strings.NewReader(str)
用於生成一個 Reader 並讀取字符串中的內容,然後返回指向該Reader 的指針,從其它類型讀取內容的函數還有:
•Read() 從 []byte 中讀取內容。
•ReadByte() 和 ReadRune() 從字符串中讀取下一個 byte 或者 rune。
字符串與其它類型的轉換
與字符串相關的類型轉換都是通過 strconv 包實現的。
該包包含了一些變量用於獲取程序運行的操作系統平臺下 int 類型所佔的位數,如: strconv.IntSize 。
任何類型 T 轉換爲字符串總是成功的。
針對從數字類型轉換到字符串,Go 提供了以下函數:
•strconv.Itoa(i int) string 返回數字 i 所表示的字符串類型的十進制數。
•strconv.FormatFloat(f float64, fmt byte, prec int, bitSize int) string 將 64 位浮點型的數字轉換爲字符串,其中 fmt 表示格式(其值可以是 'b' 、 'e' 、 'f' 或 'g' ), prec 表示精度, bitSize 則使用 32 表示 float32,用 64 表示 float64。
針對從字符串類型轉換爲數字類型,Go 提供了以下函數:
•strconv.Atoi(s string) (i int, err error) 將字符串轉換爲 int 型。
•strconv.ParseFloat(s string, bitSize int) (f float64, err error) 將字符串轉換爲 float64 型。
利用多返回值的特性,這些函數會返回 2 個值,第 1 個是轉換後的結果(如果轉換成功),第 2 個是可能出現的錯誤,因此,我們一般使用以下形式來進行從字符串到其它類型的轉換:
val, err = strconv.Atoi(s)
示例:
package main import ( "fmt" "strconv" ) func main() { origin := "666" var an int var newS string fmt.Printf("int類型的位數爲: %d\n", strconv.IntSize) an, _ = strconv.Atoi(origin) fmt.Println(an) an += 5 newS = strconv.Itoa(an) fmt.Println(newS) }
輸出結果爲:
int類型的位數爲: 64
666
671
總結
以上所述是小編給大家介紹的Go語言中strings和strconv包示例代碼詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對神馬文庫網站的支持!