字符串

常用的系统函数

1、统计字符串的长度,按字节len(str)

// golang的编码统一为utf-8(ASCII的字符(字母和数字)占一个字节,中文占3个字节)
var str = "xiao浩"
fmt.Println(len(str))

2、字符串遍历,同时处理有中文的问题

// 方式一
r := []rune(str)
for i := 0; i < len(r); i++ {
  fmt.Printf("%c\n",r[i])
}
// 方式二
for _, val := range str {
  fmt.Printf("%c\n", val)
}

3、字符串转整数

n, err := strconv.Atoi("123")
if err != nil {
  fmt.Println("转换失败", err)
} else {
  fmt.Println(n)
}

4、整数转字符串

str = strconv.Itoa(123)
fmt.Println(str)

5、字符串转[]byte

var bytes = []byte("xiaohao")
fmt.Printf("%v\n", bytes)  // [120 105 97 111 104 97 111]

6、[]byte转字符串

str = string([]byte{97, 98})
fmt.Printf("%v\n", str)  // ab

7、10进制转2, 8, 16进制

str = strconv.FormatInt(10, 2)  // 2指2进制
fmt.Printf("%v\n", str)  // 1010

8、查找子串是否在指定的字符串中

b := strings.Contains("xiaohao", "hao")
fmt.Printf("%v\n", b) // true

9、统计一个字符串有几个指定的子串

count := strings.Count("xiaohao", "o")
fmt.Printf("%v\n", count) // 2

10、不区分大小写的字符串比较(==是区分字母大小写的)

eq := strings.EqualFold("hao", "Hao")
fmt.Printf("%v\n", eq) // true

11、返回子串在字符串第一次出现的index值,如果没有返回-1

index := strings.Index("xiaohao", "hao")
fmt.Printf("%d\n", index) // 4

12、返回子串在字符串最后一次出现的index,如没有返回-1

index = strings.LastIndex("xiaohao", "a")
fmt.Printf("%d\n", index)  // 5

13、将指定的子串替换成另外一个子串

# 第一种方式Replace	
str2 := "hello 小浩"
str2 = strings.Replace(str2, "小浩", "hao", 1)  // 如果n=-1表示全部替换
fmt.Printf("%v\n", str2)  // hello hao

# 第二种方式ReplaceAll 全部替换
str2 := "hello 小浩"
str2 = strings.ReplaceAll(str2, "ll", "oo")
fmt.Printf("%v\n", str2) // heooo 小浩

14、按照指定的某个字符,为分割标识,将一个字符串拆分成字符串数组

strArr := strings.Split("hello,world", ",")
fmt.Printf("%v\n", strArr) // [hello world]

15、将字符串的字母进行大小写的转换

str = "xiaohao"
str = strings.ToUpper(str)  // 大写
fmt.Printf("%v\n", str)  // XIAOHAO

str = strings.ToLower(str)  // 小写
fmt.Printf("%v\n", str) // xiaohao

16、将字符串左右两边的空格去掉

str = "  xiao hao  "
str = strings.TrimSpace(str)
fmt.Printf("%v\n", str)  // xiao hao

17、将字符串左右两边指定的字符去掉

str = " !xiao ! hao! "
str = strings.Trim(str, " !")
fmt.Printf("%v\n", str)  // xiao ! hao

18、将字符串左边指定的字符去掉

str = "!xiao hao!"
str = strings.TrimLeft(str, "!")
fmt.Printf("%v\n", str)  // xiao hao!

19、将字符串右边指定的字符去掉

str = "!xiao hao!"
str = strings.TrimRight(str, "!")
fmt.Printf("%v\n", str)  // !xiao hao

20、判断字符串是否以指定的字符串开头

str = "xiaohao"
b = strings.HasPrefix(str, "xi")
fmt.Printf("%v\n", b)  // true

21、判断字符串是否以指定的字符串结尾

str = "xiaohao"
b = strings.HasSuffix(str, "xi")
fmt.Printf("%v\n", b)  // false