Go语言strings包基本操作

  1.字符串比较

    常用方法: strings.Compare(),strings.EqualFold()

1
2
3
4
5
6
7
8
func main() {
    a := "Hello"
    b := "hello"
        // 用于比较两个字符串的大小,如果两个字符串相等,返回为 0。如果 a 小于 b ,返回 -1 ,反之返回 1
    fmt.Println(strings.Compare(a, b))   // -1
        // EqualFold 函数,计算 s 与 t 忽略字母大小写后是否相等       
    fmt.Println(strings.EqualFold(a, b))  //true
}

  2.判断是否存在某字符或字符串

    常用方法: strings.Contains()

1
2
3
4
5
6
7
8
func main() {
    a := "Hello"
    b := "H"
    c := "你好世界"
    d := "世界"
    fmt.Println(strings.Contains(a, b))  // true
    fmt.Println(strings.Contains(c, d))  // true
}

  3.判断某字符出现的次数

    常用方法: strings.Count(),当substr为空时,返回utf8.RuneCountInString(s) + 1

1
2
3
4
5
6
7
8
9
10
11
func main() {
    a := "Hello"
    b := "H"
    fmt.Println(strings.Count(a, b)) // 1
    c := "世界"
    d := []rune(c)
    fmt.Println(len(d))  // 2
    fmt.Println(utf8.RuneCountInString(c))  // 2
    // 当substr为空时,返回utf8.RuneCountInString(s) + 1
    fmt.Println(strings.Count(c, ""))  //3
}

  4.字符串分割

    常用方法: strings.Fields(), strings.FieldsFunc(), strings.Split(), strings.SplitAfter(), strings.SplitN(), strings.SplitAfterN()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
func main() {
    a := "how are you"
    b := `你好 中国 世界
            地球`
    // strings.Fields()用一个或多个连续的空格分隔字符串,常见间隔符包括:'\t', '\n', '\v', '\f', '\r', ' ', U+0085 (NEL), U+00A0 (NBSP)
    fmt.Println(strings.Fields(a)) // [how are you]
    fmt.Println(strings.Fields(b)) // [你好 中国 世界 地球]
 
    // strings.FieldsFunc(str, func)用Unicode代码点进行分隔:满足 f(c) 返回 true, 通过实现一个回调函数来指定分隔字符串str的字符
    c := " 1bv 2bd 3mm "
    fmt.Println(strings.FieldsFunc(c, unicode.IsDigit)) // [  bv  bd  mm ]
 
    // strings.Split()
    d := "how are you"
    e := "hello"
    fmt.Println(strings.Split(d, " ")) // [how are you]
    // sep为空时,分成一个个utf-8字符
    fmt.Println(strings.Split(e, "")) // [h e l l o]
 
    // strings.SplitAfter() 会保留分割字符
    f := "how,are,you"
    fmt.Println(strings.SplitAfter(f, ",")) // [how, are, you]
 
    // strings.SplitN() 第三个参数为0时返回空切片,小于0时返回所以子串,大于0时表示返回的切片中有几个元素
    fmt.Println(strings.SplitN(f, ",", -1)) // [how are you]
    fmt.Println(strings.SplitN(f, ",", 0))  // []
    fmt.Println(strings.SplitN(f, ",", 2))  // [how are,you]
    fmt.Println(strings.SplitN(f, ",", 5))  // [how are you]
 
    // strings.SplitAfterN() 同SplitN()
    fmt.Println(strings.SplitAfterN(f, ",", 2)) // [how, are,you]
}

  5.判断字符串有某个前缀或者后缀

    常用方法: strings.HasPrefix(), strings.HasSuffix()

1
2
3
4
5
6
func main() {
    a := "golang"
    fmt.Println(strings.HasPrefix(a, "go")) //true
    fmt.Println(strings.HasSuffix(a, "go")) //false
    fmt.Println(strings.HasSuffix(a, "ng")) //true
}

  6.字符串拼接

    常用方法: strings.Join()

1
2
3
4
func main() {
    a := []string{"a", "b", "c"}
    fmt.Println(strings.Join(a, "&")) //a&b&c
}

  7.字符串替换

    常用方法: strings.Replace()

1
2
3
4
5
func main() {
    a := "abcd,世界"
    fmt.Println(strings.Replace(a, "a", "A", -1)) //Abcd,世界
    fmt.Println(strings.Replace(a, "世", "B", -1)) //abcd,B界
}

  8.字符串大小写转换

    常用方法: strings.ToLower(), strings.ToUpper()

1
2
3
4
5
6
func main() {
    a := "abcd"
    b := "ABCD"
    fmt.Println(strings.ToUpper(a))  //ABCD
    fmt.Println(strings.ToLower(b))  //abcd
}

  9.字符串首字母大写

    常用方法: strings.Title(), strings.ToTitle()

1
2
3
4
5
func main() {
    a := "hello world"
    fmt.Println(strings.Title(a)) // Hello World
    fmt.Println(strings.ToTitle(a))  // HELLO WORLD
}

  10.修剪

    常用方法: strings.Trim(), strings.TrimLeft(), strings.TrimRight(), strings.TrimSpace()

1
2
3
4
5
6
7
8
9
10
11
12
13
func main() {
    a := "ababab你好 cdaaa  a"
    b := " abababHELLO   "
 
    // Trim去除首尾符合cutset中任意字符的字符
    fmt.Println(strings.Trim(a, "ab")) // 你好 cdaaa
    // TrimLeft去除左侧满足条件的字符
    fmt.Println(strings.TrimLeft(a, "ab")) //你好 cdaaa  a
    //TrimRight去除右侧满足条件的字符
    fmt.Println(strings.TrimRight(a, "a d")) // ababab你好 c
    //TrimSpace去除收尾间隔符
    fmt.Println(strings.TrimSpace(b)) //abababHELLO
}

  11.多字符替换

    常用方法: strings.NewReplacer()

1
2
3
4
5
6
7
8
9
func main() {
    file, _ := os.Create("1.txt")
    a := "<hello>,abc<w>321"
 
    r := strings.NewReplacer("<", "^^", ">", "$$")
    fmt.Println(r.Replace(a))     //^^hello$$,abc^^w$$321
 
    _, _ = r.WriteString(file, a) //将替换结果直接写入文件
}

  12.Builder类型

1
2
3
4
5
6
func main() {
    b := strings.Builder{}
    b.WriteString("你好")
    b.WriteString("世界")
    fmt.Println(b.String())
}

  

 
posted @   屁桃  阅读(507)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示