一些字符串类型的操作
- 申明字符串类型变量
- 字符串截取
- 字符串&数组互转
- 计算字符串长度
- 要求:一个字符串大写转小写,小写转大写
- 待补充
// 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