Go字符串常用方法

领带衬有黄金 · · 978 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

更多方法,请见golang中文https://studygolang.com/pkgdoc

// 1. =============统计字符串长度,按字节len(str)
    // ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
    // UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节
    // go中都以utf8进行编码
    str1 := "hello world 哈哈"
    fmt.Println("str len=", len(str1)) // 18

    // 2. =============字符串遍历,同时处理有中文的问题 r:=[]rune(str)
    // 常规遍历时,一个中文占三个字节,直接遍历时,会截断中文为三个字节,所以中文不能显示出来
    str2 := "hello北京"
    // 先转为rune的切片,将字符串转为ascii码,然后进行遍历
    r := []rune(str2)
    fmt.Println(r) // [104 101 108 108 111 21271 20140]
    for i := 0; i < len(r); i++ {
        fmt.Printf("字符=%c\n", r[i])
    }

    // 3. =============字符串转整数
    str3, err := strconv.Atoi("123")
    if err != nil {
        fmt.Println("转换错误", err)
    } else {
        fmt.Println(str3)
    }

    // 4. =============整数转字符串
    str4 := strconv.Itoa(123)
    fmt.Printf("%T,%v\n", str4, str4) //string,123

    // 5. =============字符串转字节 []byte
    var str5 = []byte("hello go")
    fmt.Println(str5)

    // 6. =============字节转字符串
    str6 := string([]byte{97, 98, 99})
    fmt.Println(str6)

    // 7. =============10进制转2,8,16进制,返回对应的字符串
    str7 := strconv.FormatInt(123, 8)
    fmt.Println(str7)

    // 8. =============查找子串是否存在指定的字符串中
    contains := strings.Contains("seafood", "foo")
    fmt.Println(contains)

    // 9. =============统计一个字符串有几个指定的字串
    count := strings.Count("cheese", "e")
    fmt.Println(count)
    
    // 10. ============不区分大小写的字符串比较(==区分字母大小写)
    fold := strings.EqualFold("abc", "AbC")
    fmt.Println(fold)
    
    // 11. ============返回字串在字符串中第一次出现的索引
    index := strings.Index("china", "a")
    fmt.Println(index)
    
    // 12. ============返回字串在字符串最后一次出现的index,没有则返回-1
    lastIndex := strings.LastIndex("go golang", "go")
    fmt.Println(lastIndex)
    
    // 13. ============将指定的子串替换成另外一个字串
    replace := strings.Replace("go go hello", "go", "golang", 1)
    fmt.Println(replace)
    
    // 14. ============按照指定的某个字符,为分割标识,将一个字符串拆分为字符串数组
    split := strings.Split("hello,world,golang", ",")
    fmt.Println(split)
    
    // 15. ============将字符串的字母大小写替换
    lower := strings.ToLower("Go GoLang")
    upper := strings.ToUpper("Go GoLang")
    fmt.Println(lower, upper)
    
    // 16. ============将字符串左右的空格去掉
    space := strings.TrimSpace(" tn go lang     ")
    fmt.Println(space)
    
    // 17. ============将字符串左右指定的字符去掉
    trim := strings.Trim("!hello!", "!")
    fmt.Println(trim)
    
    // 18. ============将字符串左边/右边指定的字符去掉
    left := strings.TrimLeft("!hello!", "!")
    right := strings.TrimRight("!hello!", "!")
    fmt.Println(left, right)
    
    // 19. ============判断字符串以什么开头/结尾
    prefix := strings.HasPrefix("abcde", "ab")
    suffix := strings.HasSuffix("abcde", "de")
    fmt.Println(prefix, suffix)

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:领带衬有黄金

查看原文:Go字符串常用方法

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

978 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传