Go 语言字符串使用方式与技巧( 三 )

输出结果:
truefalsetruetrue阅读上面这段代码,我们使用 func Contains(s, substr string) bool 在字符串 substr 中查找 s,存在则返回 true , 反之返回 false
字符串中是否包含指定字符串中任意字符
示例代码:
func main() { fmt.Println(strings.ContainsAny("team", "i")) fmt.Println(strings.ContainsAny("fail", "ui")) fmt.Println(strings.ContainsAny("ure", "ui")) fmt.Println(strings.ContainsAny("failure", "ui")) fmt.Println(strings.ContainsAny("foo", "")) fmt.Println(strings.ContainsAny("", ""))}输出结果:
falsetruetruetruefalsefalse阅读上面这段代码,我们使用 func ContainsAny(s, chars string) bool 在字符串 s 中查找是否包含字符串 chars 中任意字符 , 存在则返回 true , 反之返回 false
删除字符串中指定字符
示例代码:
func main() { fmt.Print(strings.Trim("¡¡¡Hello, Gophers!!!", "!¡"))}输出结果:
Hello, Gophers阅读上面这段代码,我们使用 func Trim(s, cutset string) string 删除字符串 s 中的字符 cutset
字符串转换为大写
示例代码:
func main() { fmt.Println(strings.ToUpper("Gopher"))}输出结果:
GOPHER阅读上面这段代码,我们使用 func ToUpper(s string) string 将字符串中的字符全部转换为大写 。
【Go 语言字符串使用方式与技巧】字符串以指定字符拆分为字符串切片
示例代码:
func main() { fmt.Printf("%qn", strings.Split("a,b,c", ",")) fmt.Printf("%qn", strings.Split("a man a plan a canal panama", "a ")) fmt.Printf("%qn", strings.Split(" xyz ", "")) fmt.Printf("%qn", strings.Split("", "Bernardo O'Higgins"))}输出结果:
["a" "b" "c"]["" "man " "plan " "canal panama"][" " "x" "y" "z" " "][""]阅读上面这段代码,我们使用 func Split(s, sep string) []string 将字符串 s 以字符串 sep 为分隔符,拆分为字符串切片 。
字符串切片拼接为字符串
示例代码:
func main() { s := []string{"foo", "bar", "baz"} fmt.Println(strings.Join(s, ", "))}输出结果:
foo, bar, baz阅读上面这段代码,我们使用 func Join(elems []string, sep string) string 将字符串切片中的所有元素,以 sep 为分隔符,拼接为字符串 。
04 
字符串拼接
关于字符串拼接,分为编译时字符串拼接,和运行时字符串拼接 。
其中,编译时字符串拼接,即使用 + 将多个字符串拼接为一个字符串,需要注意的是,在使用 + 拼接字符串时 , 如果存在字符串变量 , 则会在运行时拼接 。
示例代码:
func main() {    str := "hello" + " world"    fmt.Println(str)    name := "frank"    outPut := "My name is " + name    fmt.Println(outPut)}输出结果:
hello worldMy name is frank阅读上面这段代码,第一个字符串拼接是在编译时拼接,第二个字符串拼接是在运行时拼接 。
需要注意的是,运行时拼接是分配一块新的内存空间 , 通过内存拷贝的方式将字符串拷贝到新内存空间 。
如果拼接后的字符串小于 32 字节,可以使用临时缓存;如果拼接后的字符串大于 32 字节,需要在堆区分配一块内存空间,并将需要拼接的多个字符串通过内存拷贝的形式拷贝过去 。


推荐阅读