1.1.1. 常用的字符串系统函数。
系统函数就是go语言的内置函数。直接就用。不用导入包。文档:https://studygolang.com/pkgdoc 。内置函数在文档的builtin 包里。字符串转换的包在strconv 包
1、统计字符串的长度,按字节 len(str)。
var name string = "hello,你好"
fmt.Println("name 的长度 = ",len(name)) //14
2、字符串遍历,同时处理有中文的问题 r := []rune(str)。
var name string = "你好"
r := []rune(name)
for i := 0; i < len(r); i++ {
fmt.Printf("%c \n",r[i])
}
3、字符串转整数: n, err := strconv.Atoi("12")。
n, err := strconv.Atoi("123")
if err != nil {
fmt.Println("转换错误",err)
}else {
fmt.Println("转换结果=",n)// 123
}
4、整数转字符串 str = strconv.Itoa(12345)。
str := strconv.Itoa(12345)
// str的值=12345, str的类型=string
fmt.Printf("str的值=%v, str的类型=%T",str,str)
5、字符串 转 []byte: var bytes = []byte("hello go")。
var bytes = []byte("hello ,你好")
//bytes的值=[104 101 108 108 111 32 44 228 189 160 229 165 189]
fmt.Printf("bytes的值=%v",bytes)
6、[]byte 转 字符串: str = string([]byte{97, 98, 99})
var bytes = []byte("hello ,你好")
//bytes的值=[104 101 108 108 111 32 44 228 189 160 229 165 189]
fmt.Printf("bytes的值=%v \n",bytes)
str := string([]byte{104,101,108,108,111,32,44,228,189,160,229,165,189})
fmt.Printf(str) //hello ,你好
7、10 进制转 成2, 8, 16 进制: str = strconv.FormatInt(123, 2) // 2-> 8 , 16
str := strconv.FormatInt(1245,16)
fmt.Printf(str) //4dd
8、查找子串是否在指定的字符串中: strings.Contains("seafood", "foo") //true
exists := strings.Contains("seafood", "foo")
fmt.Println(exists) //true
9、统计一个字符串有几个指定的子串 : strings.Count("ceheese", "e") //4
count := strings.Count("ceheese", "e")
fmt.Println(count) //4
10、不区分大小写的字符串比较(== 是区分字母大小写的):fmt.Println(strings.EqualFold("abc", "Abc")) // true
fmt.Println("abc" == "Abc") //false
fmt.Println(strings.EqualFold("abc", "Abc")) // true
11、返回子串在字符串第一次出现的 index 值,如果没有返回-1:strings.Index("NLT_abc", "abc") // 4
fmt.Println(strings.Index("NLT你_abc", "abc")) //7
fmt.Println(strings.Index("NLT你_abc", "345")) // -1
12、返回子串在字符串最后一次出现的 index,如没有返回-1 : strings.LastIndex("go golang", "go")。
fmt.Println(strings.LastIndex("go你 golang", "go")) //6
fmt.Println(strings.LastIndex("go golang", "你")) // -1
13、将指定的子串替换成另外一个子串: strings.Replace("go go hello", "go", "你好", n) 。n 可以指定你希望替换几个,如果 n=-1 表示全部替换。
//你好 go hello
fmt.Println(strings.Replace("go go hello", "go", "你好", 1))
//你好 你好 hello
fmt.Println(strings.Replace("go go hello", "go", "你好", -1))
14、分割字符串成字符串数组: strings.Split("hello,wrold,你好", ",")。
strArr := strings.Split("hello,wrold,你好", ",")
for i := 0; i < len(strArr); i++ {
fmt.Println(strArr[i])//依次输出:hello wrold 你好
}
//[hello wrold 你好]
fmt.Println(strArr)
15、将字符串的字母进行大小写的转换: strings.ToLower("Go") // go strings.ToUpper("Go") // GO
str := "hello,你好"
fmt.Println(strings.ToLower(str))//hello,你好
fmt.Println(strings.ToUpper(str))//HELLO,你好
16、将字符串左右两边的空格去掉: strings.TrimSpace(" tn a lone gopher ntrn ")
fmt.Println(strings.TrimSpace(" tn a lone gopher ntrn "))
17、将字符串左右两边指定的字符去掉 : fmt.Println(strings.Trim("!你hello!我是", "你是!"))//将字符串两边的'你' '是' '!' 3个字符去掉
//将字符串"! hello! "两边的空格和!去掉
fmt.Println(strings.Trim("! hello! ", " !"))//hello
//将字符串两边的'你' '是' '!' 去掉
fmt.Println(strings.Trim("!你hello!我是", "你是!"))//hello!我
18、 将字符串左边指定的字符去掉 : strings.TrimLeft("!你hello!我是", "你是!") //将左边 '你' '是' '!' 3个字符去掉
//将字符串左边的'你' '是' '!' 去掉
fmt.Println(strings.TrimLeft("!你hello!我是", "你是!"))//hello!我是
19、 将字符串右边指定的字符去掉 : strings.TrimRight("!你hello!我是", "你是!") //将右边 '你' '是' '!' 3个字符去掉
//将字符串右边的'你' '是' '!' 去掉
fmt.Println(strings.TrimRight("!你hello!我是", "你是!"))//!你hello!我
20、判断字符串是否以指定的字符串开头: strings.HasPrefix("ftp://192.168.10.1", "ftp") // true
fmt.Println(strings.HasPrefix("ftp你://192.168.10.1", "ftp你"))//true