常见的字符串操作有:
字符串比较
字符串包含
字符串是否有某个前缀或后缀
一个字符(串)在另一个字符串中出现的位置
Join操作
重复字符(串)
字符串中的子串替换
字符串分割
大小写转换
Trim操作
…
1. 字符串比较
func Compare(a, b string) int
Compare方法按照字典顺序比较两个字符串,相等返回0,小于返回-1,大于返回+1
fmt.Println(strings.Compare("a", "b"))
fmt.Println(strings.Compare("a", "a"))
fmt.Println(strings.Compare("b", "a"))
--------------------------------------------------------------------------
输出:
-1
0
1
2.字符串包含
func Contains(s, substr string) bool
判断一个字符串是否包含另一个字符(串),包含返回true,不包含返回false
fmt.Println(strings.Contains("seafood", "foo"))
fmt.Println(strings.Contains("seafood", "bar"))
fmt.Println(strings.Contains("seafood", ""))
fmt.Println(strings.Contains("", ""))
--------------------------------------------------------------------------
输出:
true
false
true
true
3 字符串是否有某个前缀或后缀
3.1 字符串是否有某个前缀
func HasPrefix(s, prefix string) bool
判断一个字符串是否以另一个字符串开头
fmt.Println(strings.HasPrefix("Gopher", "Go"))
fmt.Println(strings.HasPrefix("Gopher", "C"))
fmt.Println(strings.HasPrefix("Gopher", ""))
--------------------------------------------------------------------------
输出:
true
false
true
3.2 字符串是否有某个后缀
func HasSuffix(s, suffix string) bool
判断一个字符串是否以另一个字符串结尾
fmt.Println(strings.HasSuffix("Amigo", "go"))
fmt.Println(strings.HasSuffix("Amigo", "O"))
fmt.Println(strings.HasSuffix("Amigo", "Ami"))
fmt.Println(strings.HasSuffix("Amigo", ""))
--------------------------------------------------------------------------
输出:
true
false
false
true
4 一个字符(串)在另一个字符串中出现的位置
4.1 一个字符(串)在另一个字符串中首次出现的位置
func Index(s, substr string) int
返回一个字符(串)在另一个字符串中首次出现的索引位置
fmt.Println(strings.Index("chicken", "ken"))
fmt.Println(strings.Index("chicken", "dmr"))
--------------------------------------------------------------------------
输出:
4
-1
4.2 一个字符(串)在另一个字符串中最后出现的索引位置
func LastIndex(s, substr string) [int
fmt.Println(strings.Index("go gopher", "go"))
fmt.Println(strings.LastIndex("go gopher", "go"))
fmt.Println(strings.LastIndex("go gopher", "rodent"))
--------------------------------------------------------------------------
输出:
0
3
-1
5 Join操作
func Join(elems [][string], sep string) string
join操作使用某一个分隔符连接数组中的元素
s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", "))
--------------------------------------------------------------------------
输出:
foo, bar, baz
6 重复字符(串)
func Repeat(s string, count int) string
重复字符串count次
fmt.Println("ba" + strings.Repeat("na", 2))
--------------------------------------------------------------------------
输出:
banana
7 字符串中的子串替换
7.1 利用字符(串)替换n次
func Replace(s, old, new string, n int) string
在s中利用new字符(串)替换s中old字符(串) n次,如果n = -1,则替换全部
fmt.Println(strings.Replace("oink oink oink", "k", "ky", 2))
fmt.Println(strings.Replace("oink oink oink", "oink", "moo", -1))
--------------------------------------------------------------------------
输出:
oinky oinky oink
moo moo moo
7.2 利用字符(串)替换全部
func ReplaceAll(s, old, new string) string
在s中利用new字符(串)替换s中全部的old字符(串)
fmt.Println(strings.ReplaceAll("oink oink oink", "oink", "moo"))
--------------------------------------------------------------------------
输出:
moo moo moo
8 字符串分割
func Split(s, sep string) [][string]
利用分隔符sep分割字符串s,返回数组
fmt.Printf("%q\n", strings.Split("a,b,c", ","))
fmt.Printf("%q\n", strings.Split("a man a plan a canal panama", "a "))
fmt.Printf("%q\n", strings.Split(" xyz ", ""))
fmt.Printf("%q\n", strings.Split("", "Bernardo O'Higgins"))
--------------------------------------------------------------------------
输出:
["a" "b" "c"]
["" "man " "plan " "canal panama"]
[" " "x" "y" "z" " "]
[""]
9 大小写转换
9.1 转换为小写
func ToLower(s string) string
fmt.Println(strings.ToLower("Gopher"))
--------------------------------------------------------------------------
输出:
gopher
9.2 转换为大写
func ToUpper(s string) string
fmt.Println(strings.ToUpper("Gopher"))
--------------------------------------------------------------------------
输出:
GOPHER
10 Trim操作
10.1 Trim
func Trim(s, cutset string) string
删除字符串s中,包含cutset中所有字符,并返回字符串s的切片。
fmt.Print(strings.Trim("¡¡¡Hello, Gophers!!!", "!¡"))
--------------------------------------------------------------------------
输出:
Hello, Gophers
10.2 TrimLeft
func TrimLeft(s, cutset string) string
删除字符串s左侧包含cutset中所有字符,并返回字符串s的切片。
fmt.Print(strings.TrimLeft("¡¡¡Hello, Gophers!!!", "!¡"))
--------------------------------------------------------------------------
输出:
Hello, Gophers!!!
10.3 TrimRight
func TrimRight(s, cutset string) string
删除字符串s右侧包含cutset中所有字符,并返回字符串s的切片。
fmt.Print(strings.TrimRight("¡¡¡Hello, Gophers!!!", "!¡"))
--------------------------------------------------------------------------
输出:
¡¡¡Hello, Gophers
10.4 TrimPrefix
func TrimPrefix(s, prefix string) string
删除字符串前缀prefix, 并返回字符串s的切片。如果s没有以prefix前缀开头,则返回s。
var s = "¡¡¡Hello, Gophers!!!"
fmt.Println(strings.TrimPrefix(s, "¡¡¡Hello, "))
fmt.Println(strings.TrimPrefix(s, "¡¡¡Howdy, "))
--------------------------------------------------------------------------
输出:
Gophers!!!
¡¡¡Hello, Gophers!!!
10.5 TrimSuffix
func TrimSuffix(s, suffix string) string
删除字符串后缀suffix, 并返回字符串s的切片。如果s没有以suffix后缀结尾,则返回s。
var s = "¡¡¡Hello, Gophers!!!"
fmt.Println(strings.TrimSuffix(s, ", Gophers!!!"))
fmt.Println(strings.TrimSuffix(s, ", Marmots!!!"))
--------------------------------------------------------------------------
输出:
¡¡¡Hello
¡¡¡Hello, Gophers!!!
10.6 TrimSpace
func TrimSpace(s string) string
删除字符串s前缀后缀的空格,返回字符串s的切片。
fmt.Println(strings.TrimSpace(" \t\n Hello, Gophers \n\t\r\n"))
--------------------------------------------------------------------------
输出:
Hello, Gophers