Go字符串常用方法
2019-12-25 本文已影响0人
领带衬有黄金
更多方法,请见golang中文https://studygolang.com/pkgdoc
// 1. =============统计字符串长度,按字节len(str)
// ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
// UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节
// go中都以utf8进行编码
str1 := "hello world 哈哈"
fmt.Println("str len=", len(str1)) // 18
// 2. =============字符串遍历,同时处理有中文的问题 r:=[]rune(str)
// 常规遍历时,一个中文占三个字节,直接遍历时,会截断中文为三个字节,所以中文不能显示出来
str2 := "hello北京"
// 先转为rune的切片,将字符串转为ascii码,然后进行遍历
r := []rune(str2)
fmt.Println(r) // [104 101 108 108 111 21271 20140]
for i := 0; i < len(r); i++ {
fmt.Printf("字符=%c\n", r[i])
}
// 3. =============字符串转整数
str3, err := strconv.Atoi("123")
if err != nil {
fmt.Println("转换错误", err)
} else {
fmt.Println(str3)
}
// 4. =============整数转字符串
str4 := strconv.Itoa(123)
fmt.Printf("%T,%v\n", str4, str4) //string,123
// 5. =============字符串转字节 []byte
var str5 = []byte("hello go")
fmt.Println(str5)
// 6. =============字节转字符串
str6 := string([]byte{97, 98, 99})
fmt.Println(str6)
// 7. =============10进制转2,8,16进制,返回对应的字符串
str7 := strconv.FormatInt(123, 8)
fmt.Println(str7)
// 8. =============查找子串是否存在指定的字符串中
contains := strings.Contains("seafood", "foo")
fmt.Println(contains)
// 9. =============统计一个字符串有几个指定的字串
count := strings.Count("cheese", "e")
fmt.Println(count)
// 10. ============不区分大小写的字符串比较(==区分字母大小写)
fold := strings.EqualFold("abc", "AbC")
fmt.Println(fold)
// 11. ============返回字串在字符串中第一次出现的索引
index := strings.Index("china", "a")
fmt.Println(index)
// 12. ============返回字串在字符串最后一次出现的index,没有则返回-1
lastIndex := strings.LastIndex("go golang", "go")
fmt.Println(lastIndex)
// 13. ============将指定的子串替换成另外一个字串
replace := strings.Replace("go go hello", "go", "golang", 1)
fmt.Println(replace)
// 14. ============按照指定的某个字符,为分割标识,将一个字符串拆分为字符串数组
split := strings.Split("hello,world,golang", ",")
fmt.Println(split)
// 15. ============将字符串的字母大小写替换
lower := strings.ToLower("Go GoLang")
upper := strings.ToUpper("Go GoLang")
fmt.Println(lower, upper)
// 16. ============将字符串左右的空格去掉
space := strings.TrimSpace(" tn go lang ")
fmt.Println(space)
// 17. ============将字符串左右指定的字符去掉
trim := strings.Trim("!hello!", "!")
fmt.Println(trim)
// 18. ============将字符串左边/右边指定的字符去掉
left := strings.TrimLeft("!hello!", "!")
right := strings.TrimRight("!hello!", "!")
fmt.Println(left, right)
// 19. ============判断字符串以什么开头/结尾
prefix := strings.HasPrefix("abcde", "ab")
suffix := strings.HasSuffix("abcde", "de")
fmt.Println(prefix, suffix)