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

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

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) []string n是切分成幾個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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章