【go笔记】标准库-strings

标准库-strings

前言

标准库strings用于处理utf-8编码的字符串。

字符串比较-Compare

func Compare(a,b string) int
  • 若 a==b ,则返回0;若 a <b ,则返回 -1;若 a>b ,则返回 1。
  • 字符串的比较方法是根据单个字符的ASCII编码。

示例代码:

package main
import (
	"fmt"
	"strings"
)

func main() {
	var str1 string = "hello"
	var str2 string = "world"

	fmt.Println(strings.Compare(str1,str2)) // -1
	fmt.Println(strings.Compare(str2,str1)) // 1
	fmt.Println(strings.Compare(str1,str1)) // 0
}

检测字符串是否包含子串-Contains

func Contains(s,substr string) bool

示例代码:

package main
import (
	"fmt"
	"strings"
)

func main() {
	fmt.Println(strings.Contains("hello world","hello")) // true
	fmt.Println(strings.Contains("hello world","hel123")) // false
}

大小写转换

函数原型:

func ToUpper(substr string) string
func ToLower(substr string) string
func ToTitle(substr string) string

示例代码:

package main

import (
	"fmt"
	"strings"
)

func main() {
	var str1 string = "heLLo, goLang"
	fmt.Println(strings.ToUpper(str1)) // HELLO, GOLANG
	fmt.Println(strings.ToLower(str1)) // hello, golang
	fmt.Println(strings.ToTitle(str1)) // HELLO, GOLANG
}

统计子字符串出现的次数

函数原型:

func Count(str,substr string) int

示例代码:

package main

import (
	"fmt"
	"strings"
)

func main() {
	var str1 string = "heLLo, goLang"
	var str2 string = "o"
	fmt.Println(strings.Count(str1,str2))
}

判断字符串的前后缀

函数原型:

func HasPrefix(str,substr string) bool
func HasSuffix(str,substr string) bool

示例代码:

package main

import (
	"fmt"
	"strings"
)

func main() {
	var str1 string = "heLLo, goLang"
	var str2 string = "o"
	var str3 string = "he"
	var str4 string = "Lang"
	fmt.Println(strings.HasPrefix(str1, str2)) // false
	fmt.Println(strings.HasPrefix(str1, str3)) // ture
	fmt.Println(strings.HasSuffix(str1, str4)) // ture
}

分割和连接

函数原型:

func Split(str,separator string) []string
func Join(strs []string) string

示例代码:

package main

import (
	"fmt"
	"strings"
)

func main() {
	var str1 string = "heLLo,goLang"
	fmt.Println(strings.Split(str1, ",")) // [heLLo goLang]
	for _,v := range strings.Split(str1, ",") {
		fmt.Println(v)
	}

	fmt.Println(strings.Join([]string{"Hello","Golang","World"}, "、")) // Hello、Golang、World
}

索引

这个操作能获取指定字符首次出现的位置,通常用来判断子字符串在对应字符串中的位置。

函数原型:

func Index(str,substr string) int

示例代码:

package main

import (
	"fmt"
	"strings"
)

func main() {
	var str1 string = "heLLo,goLang"
	fmt.Println(strings.Index(str1, "LL")) // 2
}

清洗

清洗操作可以将字符串两端的一些字符删掉,常用来删除字符串两端的空格。

函数原型:

func Trim(s, cutset string) string
func TrimLeft(s, cutset string) string
func TrimRight(s, cutset string) string
func TrimPrefix(s, prefix string) string
func TrimSuffix(s, suffix string) string
func TrimSpace(str string) string

示例代码:

package main

import (
	"fmt"
	"strings"
)

func main() {
	var str1 string = "  heLLo,goLang  "
	var str2 string = "123heLLo,goLang123"
	fmt.Println(strings.Trim(str1, " ")) // heLLo,goLang
	fmt.Println(strings.Trim(str2, "123")) // heLLo,goLang
	// 专门用来清除两端空格的函数
	fmt.Println(strings.TrimSpace(str1)) // heLLo,goLang
}

替换

清洗操作只能完成首尾的空格或者指定字符的替换,要完成更为复杂的操作则要调用NewReplacer()函数。

函数原型:

func Replace(s, old, new string, n int) string {}
func NewReplacer(oldnew ...string) *Replacer 

示例代码:

package main

import (
	"fmt"
	"strings"
)

func main() {
	var str1 string = "  heLLo,goLang  "
	newReplacer1 := strings.NewReplacer(" ","++", ",", "==") // ++++heLLo==goLang++++
	fmt.Println(newReplacer1.Replace(str1))
}

参考文章

  • 官方文档
  • 谢伟 - 《Go语言项目开发上手指南》机械工业出版社
上一篇:【Rust】迭代中错误二


下一篇:HTML标签:表单