go语言中常用的功能之十三(字符串中的常用操作函数)

    xiaoxiao2022-07-14  203

    go中常用的字符串操作函数

    文章目录

    1. 常用操作函数概述2. 去掉指定字符3. 字符串替换4. 是否包含子串5. 字段自定义分割6. 字符串自定义修改7.自定义查找规则

    1. 常用操作函数概述

    凡是返回索引的 没找到都是返回 -1

    函数说明Count(str,substr) int统计子串出现的次数Contains(str,substr) bool包含子串么ContainsAny(str,chars) bool包含任何unicode字符(\r\n)ContainsRune(str,rune) bool包含unicode单个字符LastIndex(str,substr) int最后一次出现的index位置 中文会算成 3个字符IndexByte(str,char) int第一次字符出现的位置 中文无法使用IndexRune(str,rune) int第一次unicode字符出现的位置IndexAny(str,chars) int返回任何unicode字符(\r\n)第一次出现的位置LastIndexAny(str,chars) int返回任何unicode字符(\r\n)最后一次出现的位置LastIndexByte(str,char) int最后一次字符出现的位置 中文无法使用SplitN(str,sep,n) []stringn是切分成几个string 如果是 1不切分 n 前n-1切分 最后一份不管包含多少个sep 都合成一个字符串 不做切分SplitAfterN(str,sep,n) []string切分保留分割符Split(str,seq) []string正常切分SplitAfter(str,seq) []string正常切分并保留分隔符Fields(str) []string根据空格分割所有FieldsFunc(str func(r rune)bool{})根据指定规则拆分字符串Join([]string,sep)根据指定的分割符合并字符串HasPrefix(str,prex)以什么开头HasSuffix(str,sufx)以什么结尾Map(func(rune)rune,str) string根据自定义函数对字符串进行修改并返回Repeat(str,n) string重复某个字符串n次ToUpper(str)大写ToLower(str)小写TrimLeftFunc(str,func(rune)rune) string左侧去指定字符TrimRightFunc(str,func(rune)rune) string右侧去指定字符TrimFunc(str,func(rune)rune) string倆侧去指定字符IndexFunc(str,func(rune)bool) int自定义第一次查找规则LastIndexFunc(str,func(rune)bool) int自定义最后一次查找规则Trim(str,cutset)这里cutset是一个集合字符串 ";:,]"等等TrimLeft(str,cutset)去左侧指定字符TrimRight(str,cutset)去右侧指定字符TrimSpace(str)去空格TrimPrefix(str,prex)去指定前缀TrimSuffix(str,sufx)去指定后缀Replace(str,oldstr,newstr,n)替换 n为-1 替换全部ReplaceAll(str,oldstr,newstr)替换全部EqualFold(str,t)比对是否所有的unicode字符都相等Index(str,substr)第一次出现的位置

    2. 去掉指定字符

    /** 自定义的trim函数会遍历整个字符串 ,返回每个字符,如果回调函数中出现的字符 返回 true 且 他后面|前面的所有字符 要么返回true 要么没有 这样该字符才会被trim掉 */ str := "[abebcegefet]" res := strings.TrimFunc(str, func(r rune) bool { return r == ']' || r == '[' || r == '哈' || r == 'c' }) fmt.Println(res) //ab

    /** 函数结果与上面的完全一样 */ res2 := strings.Trim(str, "[]哈c") fmt.Println(res2) //ab

    3. 字符串替换

    res3 := strings.Replace(str, "哈", "ha", 1) //替换指定个数 fmt.Println(res3) //[abha哈c] res4 := strings.Replace(str, "哈", "ha", -1) //替换全部 fmt.Println(res4) //[abhahac]

    4. 是否包含子串

    res5 := strings.Contains(str, "哈哈") fmt.Println(res5) //true //------------------------------ res6 := strings.Count(str, "哈哈") fmt.Println(res6) //1 //------------------------------ ress := strings.Fields("a b c f d g") for k, v := range ress { fmt.Println(k, v) }

    5. 字段自定义分割

    fmt.Println(strings.FieldsFunc("a,b;c.f\nd\tg", func(r rune) bool { return strings.ContainsRune("\n\t ,;.", r) }))

    6. 字符串自定义修改

    resr := strings.Map(func(r rune) rune { if strings.ContainsRune("\n\t ,;.", r) { return ' ' } return r }, "a,b;c.f\nd\tg") fmt.Println(resr)

    7.自定义查找规则

    比如我们不希望出现的字符是 “天” 那他第一次不出现的时候 我们认为是我们 所要寻找的位置

    fmt.Println(strings.IndexFunc("天天都需要你的爱", func(r rune) bool { return r != '天' })) //6
    最新回复(0)