golang常用库-字符串

876 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

我们在golang中也会经常使用已经存在的库。接下来我们介绍一下我们常用的golang库有哪些:

字符串相关

strings

普通操作
func main() {
  a := "滋溜滋溜"
  b := "哈哈哈"
  fmt.Println(strings.Compare(a,b))//字符串比较如果相等为0,不相等-1
  fmt.Println(strings.Contains(a,"滋"))//是否包含某字符或字符串
  fmt.Println(strings.ContainsAny(a,"滋&溜"))//任意一个字符存在都返回true 判断多个字符用&相连
  fmt.Println(strings.Count(a,"滋"))//字符串出现次数,如果后面的字符为空时返回字符串长度+1
}
字符串分割

包含三组六种函数,Fields 和 FieldsFunc、Split 和 SplitAfter、SplitN 和 SplitAfterN

Split(s, sep) 和 SplitN(s, sep, -1) 相同;SplitAfter(s, sep) 和 SplitAfterN(s, sep, -1) 相同。

func main() {
  //切片可以使用fmt.Printf("%q",切片)打印
  s := "this is my world"
  strings.Fields(s)//用空格分割字符串
  strings.FieldsFunc("  foo bar  baz   ", unicode.IsSpace)//指定字符分割

  s1 := "今,天,是,个,好,日,子"
  fmt.Printf("%q",strings.Split(s1, ","))//如果是空将分割每个字符
  fmt.Printf("%q",strings.SplitAfter(s1,"s"))//分割后保留分割时的条件字符串
  fmt.Printf("%q",strings.SplitN(s1,",",2))//n表示返回的切片的大小
  fmt.Printf("%q",strings.SplitAfterN(s1,",",2))//n表示返回的切片的大小

}
判断前后缀
func main(){
  s := "所以还是可以的"
  strings.HasSuffix(s, "的")//判断后缀
  strings.HasPrefix(s,"所")//判断前缀
 }
字符串拼接
  //使用+拼接
  pinjie1 := "完美世界"+"还好吗"
  fmt.Println(pinjie1)

  //使用Sprintf拼接
  s := "完美世界"
  res := fmt.Sprintf("%s%s", s, "哈哈哈")
  fmt.Println(res)

  //使用strings.join拼接
  s1 := []string{s,"嘿嘿哈哈"}
  join := strings.Join(s1, " ==== ")
  fmt.Println(join)

  //使用builder,官方推荐
  s3 := "hello"
  s4 := "world"
  var build strings.Builder
  build.WriteString(s3)
  build.WriteString(s4)
  s5 := build.String()
  fmt.Println(s5)
其他操作
func main() {
  s := "are you ok"
  strings.Index(s, "r")//字符在字符串的位置 如果是中文字符可能是占两个字符
  fmt.Println("ba"+strings.Repeat("na",2))//重复字符串n次
  fmt.Println(strings.Replace(s,"a","b",1))//替换几个字符串
  fmt.Println(strings.ReplaceAll(s,"o","b"))//替换全部字符串
  fmt.Println(strings.ToLower(s))//转小写
  fmt.Println(strings.ToUpper(s))//转大写
  fmt.Println(strings.Title(s))//title会将首字母大写
  fmt.Println(strings.Trim(s,"a"))//去掉左侧或右侧某个字符
}

strconv

Atoi

string类型转换成int类型

Itoa

int转换成string

ParaseType系列

将string转换成指定Type类型

b, err := strconv.ParseBool("true")
f, err := strconv.ParseFloat("3.1415", 64)
i, err := strconv.ParseInt("-2", 10, 64)
u, err := strconv.ParseUint("2", 10, 64)
FormatType系列

将给定类型数据格式化为string类型数据的功能

s1 := strconv.FormatBool(true)
s2 := strconv.FormatFloat(3.1415, 'E', -1, 64)
s3 := strconv.FormatInt(-2, 16)
s4 := strconv.FormatUint(2, 16)