[go] strings -字符串操作

参考链接:strings package - strings - pkg.go.dev

常见的字符串操作有:

字符串比较
字符串包含
字符串是否有某个前缀或后缀
一个字符(串)在另一个字符串中出现的位置
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