1)统计字符串的长度,按字节 len(str)
len()函数为内建函数,不需要引包
package main
import (
"fmt"
)
func main() {
//统计字符串的长度,按字节len(str)
//golang的编码统一为utf-8(ascii的字符(包含数字和字母)占一个字节,汉字占用3个字节)
str := "hello北"
fmt.Println("str len=", len(str)) //len("hello")=5 len("hello北")=8
}
2)字符串遍历,同时处理有中文的问题 r:=[]rune(str)
package main
import (
"fmt"
)
func main() {
str2 := "hello北京"
//方法一
//字符串遍历,同时处理有中文的问题 r:= [] rune(str)
r := []rune(str2)
for i := 0; i < len(r); i++ {
fmt.Printf("%c\n", r[i])
}
//方法二
for _, v := range str2 {
fmt.Printf("%c\n", v)
}
}
3)字符串转整数:n,err := strconv.Atoi("12")
此时需要引入包 "strconv"
package main
import (
"fmt"
"strconv"
)
func main() {
//字符串转整数:n,err := strconv.Atoi("12")
n, err := strconv.Atoi("123A")
if err != nil {
//转换错误 strconv.Atoi: parsing "123A": invalid syntax
fmt.Println("转换错误", err)
} else {
//转换成的结果是 123
fmt.Println("转换成的结果是", n)
}
}
4)整数转字符串 str = strconv.Itoa(12345)
package main
import (
"fmt"
"strconv"
)
func main() {
//整数转字符串 str = strconv.Itoa(12345)
str = strconv.Itoa(12345)
fmt.Printf("str=%v,str=%T", str, str) //str=12345,str=string
}
5) 字符串转 []byte: var bytes =[]byte("hello go")
package main
import (
"fmt"
)
func main() {
//字符串转 []byte: var bytes =[]byte("hello go")
var bytes = []byte("hello go")
fmt.Printf("bytes=%v\n", bytes) //bytes=[104 101 108 108 111 32 103 111]
}
6)[]byte转字符串:str=string([]byte{97,98,99})
package main
import (
"fmt"
)
func main() {
//[]byte转字符串:str=string([]byte{97,98,99})
str = string([]byte{97, 98, 99})
fmt.Printf("str=%v\n", str) //str=abc
}
7)10进制转2,8,16进制:str=strconv.FormatInt(123,2) //2->8,16
package main
import (
"fmt"
)
func main() {
//10进制转2,8,16进制:str=strconv.FormatInt(123,2) //2->8,16
str = strconv.FormatInt(123, 2)
fmt.Printf("123对应的二进制是=%v\n", str) //123对应的二进制是=1111011
str = strconv.FormatInt(123, 16)
fmt.Printf("123对应的16进制是=%v\n", str) //123对应的16进制是=7b
}
8)查找子串是否在指定的字符串中:strings.Contains("seafood","foo") //true
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
//查找子串是否在指定的字符串中:strings.Contains("seafood","foo") //true
flag := strings.Contains("seafood", "foo")
fmt.Printf("flag=%v\n", flag) //flag=true
}
9) 统计一个字符串有几个指定的子串:strings.Count("ceheese","e") //4
10)不区分大小写的字符串比较(==是区分字母大小写的):fmt.Println(strings.EqualFold("abc","Abc")) //true
11)返回子串在字符串第一次出现的index值,如果没有返回-1:
strings.Index("NLT_abc","abc") //4
12)返回子串在字符串最后一次出现的index,如果没有出现则返回-1:
strings.LastIndex("go golang","go")
13)将指定的子串替换成另一个子串:
strings.Replace("go go hello","go","go语言",n)
n可以指定你希望替换的个数,如果n=-1则表示全部替换
14)按照指定的某个字符,为分割标识,将一个字符串拆分成字符串数组:
strings.Split("hello,world,ok",",")
15)将字符串的字母进行大小写转换:
strings.ToLower("Go") // go
strings.ToUpper("Go") //GO
16)将字符串左右两边的空格去掉
strings,TrimSpace(" tn a lone gopher ntrn ")
17)将字符串左右两边指定的字符去掉
strings.Trim("! hello! "," !") //["hello"] //将左右两边的 !和 " "去掉
18)将字符串左边指定的字符串去掉
strings.TrimLeft("! hello! "," !") //[hello! ] //只去掉左边的指定字符
19)将字符串右边指定的字符去掉
strings.TrimRight("! hello! "," !") //[! hello] //只去掉右边的指定字符
20)判断字符串是否以指定的字符串开头
strings.HasPrefix("ftp://192.168.10.1","ftp") //true
21)判断字符串是否以指定的字符串结束
strings.HsaSuffix("NLT_abc.jpg","abc) //false
来源于:尚硅谷