三,字符串类型

101 阅读2分钟

一些字符串类型的操作

  1. 申明字符串类型变量
  2. 字符串截取
  3. 字符串&数组互转
  4. 计算字符串长度
  5. 要求:一个字符串大写转小写,小写转大写
  6. 待补充
// 1. 申明字符串类型
var a string = "123"
b := "456"
fmt.Printf("a的值是%v,类型是:%T \n", a, a) // a的值是123,类型是:string
fmt.Printf("b的值是%v,类型是:%T \n", b, b) // b的值是456,类型是:string

// 2. 字符串截取
c := "hello wangjie"
d := "海上不能生花"
fmt.Printf("截取字符串前三个字符:%v \n", c[0:3])                // 截取字符串前三个字符:hel
fmt.Printf("中文字符串的长度为:%v \n", len(d))                  // 中文字符串的长度为:18  | 6*3 = 18
fmt.Printf("中文直接截取字符串前三个字符:%v \n", d[0:3])          // 中文直接截取字符串前三个字符:海
fmt.Printf("中文转byte数组截取前三个字符:%v \n", []byte(d)[0:3]) // 中文转byte数组截取前三个字符:[230 181 183]
fmt.Printf("中文转rune数组截取前三个字符:%v \n", []rune(d)[0:3]) // 中文转rune数组截取前三个字符:[28023 19978 19981]
// 符合期待的截取前三位中文字符串 | 转成rune数组截取,最后再转回字符串类型
fmt.Println(string([]rune(d)[0:3])) 												 // 海上不

// 3. 字符串&数组互转
e := "1,2,3,4,5"
var f []string
f = strings.Split(e, ",")
fmt.Println(f) // [1 2 3 4 5]
g := strings.Join(f, ",")
fmt.Println(g) // 1,2,3,4,5

// 4. 计算字符串长度
h := "海上不能生花"
i := "海上不能生花hello"
j := "hello"
fmt.Printf("字符串的长度是:%v \n", strings.Count(h, "")-1) // 6
fmt.Printf("字符串的长度是:%v \n", strings.Count(i, "")-1) // 11
fmt.Printf("字符串的长度是:%v \n", len([]rune(i)))         // 11
fmt.Printf("字符串的长度是:%v \n", len([]rune(j)))         // 5

// 5. 字符串大小写转换
k := "abc"
fmt.Printf("小写转大写结果:%v \n", strings.ToUpper(k)) // 小写转大写结果:ABC
l := "ABC"
fmt.Printf("大写转小写结果:%v \n", strings.ToLower(l)) // 大写转小写结果:abc

// 6. 要求:一个字符串大写转小写,小写转大写 | +-32的办法 | 知识点:A-Z,a-z
m := "ABCdefZz"
resRune := []rune(m)
for i := 0; i < len(resRune); i++ {
  if resRune[i] <= rune('Z') { // 大写转小写
    resRune[i] += 32
  } else { 										 // 小写转大写
    resRune[i] -= 32
  }
}
fmt.Println(string(resRune)) 	// abcDEFzZ