golang 字符串

字符串常用系统函数

1.统计字符串长度:len(str)

这个函数是内建函数,存在于内建包builtin中,可以不用导入直接使用。golang的编码统一为utf-8(ascii的字符(字母和数字)占一个字节,汉字占用三个字节)。len()是按字节数返回的

func main() {
    //golang的编码统一为utf-8(ascii的字符(字母和数字)占一个字节,汉字占用三个字节)
    //len是按字节数返回的所以返回是8::hello占用5个字节,北占用三个字节。
    var str string = "hello北"
    fmt.Println(len(str))
}

2.字符串遍历,同时有处理中文的问题 r := []rune(str)。用for遍历中文字符会有乱码问题,需要先使用[]rune(str)来转换再进行遍历。用键值循环for range可以直接处理中文。

复制代码
func main() {
 //用for遍历中文字符会有乱码问题,需要先使用[]rune(str)来转换再进行遍历。
   var str string = "hello北京"
    str1 := []rune(str)
    for i := 0; i < len(str1); i++ {
        fmt.Printf("字符串=%c\n", str1[i])
    }
}
复制代码

 3.字符串转整数 n, err := strconv.Atoi("12)。如果返回err不为空,则转换失败抛出错误。常用于对数据类型做校验。

func main() {
    n, err := strconv.Atoi("12")
    if err != nil {
        fmt.Println("转换错误:", err)
    } else {
        fmt.Println("转换的结果为:", n)
    }
}

4.整数转字符串 str = strconv.Itoa(12345)

func main() {
    str3 := strconv.Itoa(12345)
    fmt.Println("str3=%v, str3=%T", str3, str3)
}

5.字符串转二进制[]byte: var bytes = []byte("hello go)。强制转换切片,用于将字符串写入二进制文件

func main() {
    var bytes = []byte("hello go")
    fmt.Println(bytes)
}

6.二进制转字符串 str := string([]byte{97, 98, 99})。强制转换

func main() {
    str4 := string([]byte{97, 98, 99})
    fmt.Println(str4)
}

7.10进制转 2,8,16进制:str = strconv.FormatInt(123,2)  str = strconv.FormatInt(123,8) str = strconv.FormatInt(123,16)

func main() {
    str5 := strconv.FormatInt(123, 2)
    fmt.Println(str5)
    str5 = strconv.FormatInt(123, 8)
    fmt.Println(str5)
    str5 = strconv.FormatInt(123, 16)
    fmt.Println(str5)
}

8.查找子串是否在指定字符串中。strings.Contains("seafood", "foo")查找子字符串foo是否存在于字符串seafood中,若是返回true

func main() {
    res1 := strings.Contains("seafood", "foo")
    fmt.Println(res1)
}

9.统计字符串中有几个指定的子串

func main() {
    res2 := strings.Count("hehehello", "he")
    fmt.Println(res2)
}

10.不区分大小写的字符串比较

func main() {
    res3 := strings.EqualFold("abc", "ABc")
    fmt.Println(res3) //true  不区分大小写
    fmt.Println("结果", "abc" == "ABc") //false 区分大小写
}

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

func main() {
    res4 := strings.Index("hahelo", "he")
    fmt.Println(res4)
}

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

func main() {
    res5 := strings.LastIndex("hehahal", "ha")
    fmt.Println(res5)
}

13.在字符串中将指定子串替换成另一个子串,res6 := strings.Replace("go go hello", "go", "go语言", n),如果n=-1,则全部替换

func main() {
    res6 := strings.Replace("go go hello", "go", "go语言", -1)
    fmt.Println(res6)
}

14.按照指定的某个字符,为分割字符,将一个字符串拆分成字符串数组。后面的""中填写分隔符

func main() {
str6 := "hello,world,ok"
res7 := strings.Split(str6, ",")
for _, val := range res7 {
fmt.Println(val)
}
}// go \n hello\n ok

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

func main() {
    res8 := strings.ToLower("Go")//转换成小写,go
    fmt.Println(res8)
    res9 := strings.ToUpper("Go") //转换成大写:GO
}

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

    str7 := " tn a lone gopher ntrn "
    res11 := strings.TrimSpace(str7)
    fmt.Println(res11)
}//tn a lone gopher ntrn

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

func main() {
    str8 := "tn a lone gopher ntrntn"
    res10 := strings.Trim(str8, "tn ")
    fmt.Println(res10)
}//a lone gopher ntr

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

func main() {
    str8 := "tn a lone gopher ntrntn"
    res12 := strings.TrimLeft(str8, "tn ")
    fmt.Println(res12)
}//a lone gopher ntrntn

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

func main() {
    str8 := "tn a lone gopher ntrntn"
    res13 := strings.TrimRight(str8, "tn ")
    fmt.Println(res13)
}//tn a lone gopher ntr

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

func main() {
    str8 := "ltn a lone gopher ntrntn"
    res14 := strings.HasPrefix(str8, "lt")
    fmt.Println(res14)
}//true

21.判断字符串是否以指定的字符串结束

func main() {
    str8 := "ltn a lone gopher ntrntn"
    res14 := strings.HasSuffix(str8, "lt")
    fmt.Println(res14)
}//false
posted @   潇潇暮鱼鱼  阅读(203)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示