HasPrefix
判斷字符串 s
是否以 prefix
開頭shell
strings.HasPrefix(s, prefix string) bool
複製代碼
HasPrefix
判斷字符串 s
是否以 prefix
開頭bash
strings.HasSuffix(s, suffix string) bool
複製代碼
示例:函數
package main
import (
"fmt"
"strings"
)
func main() {
var str string = "hello world"
// 前綴
fmt.Printf("前綴包含 'hello' = %t\n", strings.HasPrefix(str,"hello"))
fmt.Printf("前綴包含 'world' = %t\n", strings.HasPrefix(str,"world"))
// 後綴
fmt.Printf("後綴包含 'ld' = %t\n", strings.HasSuffix(str,"ld"))
}
複製代碼
輸出:ui
前綴包含 'hello' = true
前綴包含 'world' = false
後綴包含 'ld' = true
複製代碼
Contains
判斷字符串 s
是否包含 substr
編碼
Contains(s, substr string) bool
複製代碼
示例:spa
package main
import (
"fmt"
"strings"
)
func main() {
var str string = "hello world"
// 判斷包含關係
fmt.Printf("字符串是否包含 'llo' = %t\n", strings.Contains(str,"llo"))
}
複製代碼
輸出:code
字符串是否包含 'llo' = true
複製代碼
Index
返回字符串 substr
在字符串 s
中的第一個位置,-1
表示字符串 s
不包含 substr
orm
Index(s, substr string) int
複製代碼
LastIndex
返回字符串 substr
在字符串 s
中的最後一個位置, -1
表示字符串 s
不包含 substr
字符串
LastIndex(s, substr string) int
複製代碼
若是須要查詢非 ASCII 編碼的字符在父字符串中的位置,建議使用如下函數來對字符進行定位:string
IndexRune(s string, r rune) int
複製代碼
示例:
package main
import (
"fmt"
"strings"
)
func main() {
var str string = "hello world"
// 判斷字符串所在的位置(第一個位置)
fmt.Printf("子字符串 'hello' 所在第一個位置 index = %d\n", strings.Index(str,"hello"))
// 判斷字符串所在的位置(最後一個位置)
fmt.Printf("子字符串 'l' 所在最後一個位置 index = %d\n", strings.LastIndex(str,"l"))
}
複製代碼
輸出:
子字符串 'hello' 所在第一個位置 index = 0
子字符串 'l' 所在最後一個位置 index = 9
複製代碼
Replace
用於將字符串 s
中的前 n
個字符串 old
替換爲字符串 new
,並返回一個新的字符串,若是 n = -1
則替換全部字符串 old
爲字符串 new
Replace(s, old, new string, n int) string
複製代碼
示例:
package main
import (
"fmt"
"strings"
)
func main() {
var str string = "hello world, hello, hello"
// 字符串替換
fmt.Printf(" '你好' 替換第1個 'hello' = %s\n",strings.Replace(str,"hello","你好", 1))
fmt.Printf(" '你好' 替換第2個之前的 'hello' = %s\n",strings.Replace(str,"hello","你好", 2))
fmt.Printf(" '你好' 替換全部的 'hello' = %s\n",strings.Replace(str,"hello","你好", -1))
}
複製代碼
Count
用於統計字符串 substr
出如今字符串 s
中的沒有重疊的次數
Count(s, substr string) int
複製代碼
示例:
package main
import (
"fmt"
"strings"
)
func main() {
var str string = "hello world, hello, hello"
var manyH string = "HHHHHHHH"
// 字符串出現次數
fmt.Printf(" 'hello' 出現的非重疊次數 = %d\n", strings.Count(str,"hello"))
fmt.Printf(" 'HH' 出現的非重疊次數 = %d\n", strings.Count(manyH,"HH"))
}
複製代碼
輸出:
'hello' 出現的非重疊次數 = 3
'HH' 出現的非重疊次數 = 4
複製代碼
Repeat
用於重複 count
次字符串 s
並返回新的字符串
Repeat(s string, count int) string
複製代碼
示例:
package main
import (
"fmt"
"strings"
)
func main() {
// 重複字符串
var originalStr = "hello"
fmt.Printf("重複字符串 'hello' 3 次 = %s\n", strings.Repeat(originalStr,3))
}
複製代碼
輸出:
重複字符串 'hello' 3 次 = hellohellohello
複製代碼
ToLower
將字符串 s
所有轉爲小寫
ToLower(s string) string
複製代碼
ToUpper
將字符串 s
所有轉爲大寫
ToUpper(s string) string
複製代碼
示例:
package main
import (
"fmt"
"strings"
)
func main() {
var str string = "HELLO world"
// 字符串所有轉爲小寫
fmt.Printf(" 'HELLO world' 轉爲小寫 = %s\n", strings.ToLower(str))
// 字符串所有轉爲大寫
fmt.Printf(" 'HELLO world' 轉爲大寫 = %s\n", strings.ToUpper(str))
}
複製代碼
輸出:
'HELLO world' 轉爲小寫 = hello world
'HELLO world' 轉爲大寫 = HELLO WORLD
複製代碼
TrimLeft
用於剔除字符串 s
開頭的字符串 cutset
TrimLeft(s string, cutset string) string
複製代碼
TrimRight
用於剔除字符串 s
末尾的字符串 cutset
TrimRight(s string, cutset string) string
複製代碼
TrimSpace
用於剔除字符串 s
開頭和末尾的空格字符串
TrimSpace(s string) string
複製代碼
Trim
用於剔除掉字符串 s
開頭和末尾的字符串 cutset
Trim(s string, cutset string) string
複製代碼
示例:
package main
import (
"fmt"
"strings"
)
func main() {
var str string = "hello world"
// 剔除掉開頭的字符串
fmt.Printf("裁剪掉開頭的字符串 'he' = %s\n", strings.TrimLeft(str,"he"))
// 剔除掉末尾的字符串
fmt.Printf("裁剪掉末尾的字符串 'ld' = %s\n", strings.TrimRight(str,"ld"))
// 剔除掉開頭和末尾的空格字符串
var cutString string = " he llo "
fmt.Printf("裁剪掉開頭和末尾的空白字符串 = %s\n", strings.TrimSpace(cutString))
// 剔除掉開頭和末尾指定的字符串
var cutString1 string = "shellos"
fmt.Printf("裁剪掉全部的空格字符串 = %s\n", strings.Trim(cutString1,"s"))
}
複製代碼
輸出:
裁剪掉開頭的字符串 'he' = hello world
裁剪掉末尾的字符串 'ld' = hello wor
裁剪掉開頭和末尾的空白字符串 = he llo
裁剪掉全部的空格字符串 = hello
複製代碼
slice
與字符串之間的轉換Fields
將會利用空白符號來做爲分隔符將字符串分割成若干小塊,並返回一個 slice
,若是字符串只包含空白符號,則返回一個長度爲 0
的 slice
。
Fields(s string) []string
複製代碼
Split
用於自定義分割符號 sep
來對指定字符串進行分割,一樣返回 slice
。
Split(s, sep string) []string
複製代碼
示例:
package main
import (
"fmt"
"strings"
)
func main() {
str := "The quick brown fox jumps over the lazy dog"
sl := strings.Fields(str)
fmt.Printf("根據空格分割成 slice:\n")
fmt.Println(sl)
fmt.Println()
str2 := "The-quick-brown-fox-jumps-over-the-lazy-dog"
sl2 := strings.Split(str2,"-")
fmt.Printf("根據 '-' 分割成 slice:\n")
fmt.Println(sl2)
fmt.Println()
str3 := strings.Join(sl2,"+")
fmt.Printf("slice sl2 轉爲字符串以 '+' 鏈接:\n", )
fmt.Println(str3)
}
複製代碼
輸出:
根據空格分割成 slice:
[The quick brown fox jumps over the lazy dog]
根據 '-' 分割成 slice:
[The quick brown fox jumps over the lazy dog]
slice sl2 轉爲字符串以 '+' 鏈接:
The+quick+brown+fox+jumps+over+the+lazy+dog
複製代碼
ParseInt
把字符串 s
轉化爲 int64
類型
base
表示進位制(2 到 36),若是 base
爲 0,則根據字符串前綴判斷,前綴 0x 表示 16 進制,前綴 0 表示 8 進制,不然是 10 進制bitSize
表示結果的位寬(包括符號位),0 表示最大位寬ParseInt(s string, base int, bitSize int) (i int64, err error)
複製代碼
示例:
package main
import (
"fmt"
"strconv"
)
func main() {
num,error := strconv.ParseInt("11",2,0)
fmt.Printf("num = %d\n", num)
fmt.Printf("error = %v\n\n", error)
num1,error1 := strconv.ParseInt("11",8,0)
fmt.Printf("num1 = %d\n", num1)
fmt.Printf("error1 = %v\n\n", error1)
num2,error2 := strconv.ParseInt("11",10,0)
fmt.Printf("num2 = %d\n", num2)
fmt.Printf("error2 = %v\n\n", error2)
num3,error3 := strconv.ParseInt("11",16,0)
fmt.Printf("num3 = %d\n", num3)
fmt.Printf("error3 = %v\n\n", error3)
}
複製代碼
輸出:
num = 3
error = <nil>
num1 = 9
error1 = <nil>
num2 = 11
error2 = <nil>
num3 = 17
error3 = <nil>
複製代碼
ParseUint
和 ParseInt
同樣,可是輸出爲正整數
ParseUint(s string, base int, bitSize int) (uint64, error)
複製代碼
Atoi
把字符串 s
轉換爲int
類型,並返回 error
Atoi(s string) (int, error)
複製代碼
示例:
package main
import (
"fmt"
"strconv"
)
func main() {
num,error := strconv.Atoi("1")
fmt.Printf("num = %d\n",num)
fmt.Println("error = ",error)
}
複製代碼
輸出:
num = 1
error = <nil>
複製代碼
ParseBool
把字符串 s
轉換爲 bool
,並返回 error
ParseBool(str string) (bool, error)
複製代碼
ParseFloat
把字符串 s
轉換爲 float64
,並返回 error
bitSize
表示結果的位寬(包括符號位),0 表示最大位寬ParseFloat(s string, bitSize int) (float64, error)
複製代碼
FormatInt
把 i
轉換爲 string
base
表示進位制(2 到 36)FormatInt(i int64, base int) string
複製代碼
FormatUint
和 FormatInt
同樣,可是要爲正整數
func FormatUint(i uint64, base int) string 複製代碼
FormatUint
把 uint64
轉爲字符串
FormatUint(i uint64, base int) string
複製代碼
FormatInt
把 int64
轉爲字符串
FormatInt(i int64, base int) string
複製代碼
FormatBool
把 bool
轉爲字符串
FormatBool(b bool) string
複製代碼
FormatFloat
把 float64
轉爲字符串
一、f
:要轉換的浮點數
二、fmt
:格式標記(b
、e
、E
、f
、g
、G
)
b
(-ddddp±ddd
,二進制指數)e
(-d.dddde±dd
,十進制指數)E
(-d.ddddE±dd
,十進制指數)f
(-ddd.dddd
,沒有指數)g
(e
:大指數,f
:其它狀況)G
(E
:大指數,f
:其它狀況)e
,E
和 f
,則 prec
表示小數點後的數字位數g
,G
,則 prec
表示總的數字位數(整數部分+小數部分)三、prec
:精度(數字部分的長度,不包括指數部分)
四、bitSize
:指定浮點類型(32:float32
、64:float64
)
FormatFloat(f float64, fmt byte, prec, bitSize int) string
複製代碼
示例:
package main
import (
"fmt"
"strconv"
)
func main() {
f := 200.12345678901234567890123456789
fmt.Println(strconv.FormatFloat(f, 'b', 5, 32))
fmt.Println(strconv.FormatFloat(f, 'e', 5, 32))
fmt.Println(strconv.FormatFloat(f, 'E', 5, 32))
fmt.Println(strconv.FormatFloat(f, 'f', 5, 32))
fmt.Println(strconv.FormatFloat(f, 'g', 5, 32))
fmt.Println(strconv.FormatFloat(f, 'G', 5, 32))
fmt.Println(strconv.FormatFloat(f, 'b', 30, 32))
fmt.Println(strconv.FormatFloat(f, 'e', 30, 32))
fmt.Println(strconv.FormatFloat(f, 'E', 30, 32))
fmt.Println(strconv.FormatFloat(f, 'f', 30, 32))
fmt.Println(strconv.FormatFloat(f, 'g', 30, 32))
fmt.Println(strconv.FormatFloat(f, 'G', 30, 32))
}
複製代碼
輸出:
13115291p-16
2.00123e+02
2.00123E+02
200.12346
200.12
200.12
13115291p-16
2.001234588623046875000000000000e+02
2.001234588623046875000000000000E+02
200.123458862304687500000000000000
200.1234588623046875
200.1234588623046875
複製代碼