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
复制代码