go中常用的字符串操作函数
凡是返回索引的 没找到都是返回 -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)第一次出现的位置或
/** 函数结果与上面的完全一样 */ res2 := strings.Trim(str, "[]哈c") fmt.Println(res2) //ab比如我们不希望出现的字符是 “天” 那他第一次不出现的时候 我们认为是我们 所要寻找的位置
fmt.Println(strings.IndexFunc("天天都需要你的爱", func(r rune) bool { return r != '天' })) //6