How to get the last X Characters of a Golang String?

前端 未结 2 1291
猫巷女王i
猫巷女王i 2021-01-31 13:25

If I have the string \"12121211122\" and I want to get the last 3 characters (e.g. \"122\"), is that possible in Go? I\'ve looked in the string package and didn\'t

相关标签:
2条回答
  • 2021-01-31 13:52

    You can use a slice expression on a string to get the last three bytes.

    s      := "12121211122"
    first3 := s[0:3]
    last3  := s[len(s)-3:]
    

    Or if you're using unicode you can do something like:

    s      := []rune("世界世界世界")
    first3 := string(s[0:3])
    last3  := string(s[len(s)-3:])
    

    Check Strings, bytes, runes and characters in Go and Slice Tricks.

    0 讨论(0)
  • 2021-01-31 13:56

    The answer depends on what you mean by "characters". If you mean bytes then:

    s := "12121211122"
    lastByByte := s[len(s)-3:]
    

    If you mean runes in a utf-8 encoded string, then:

    s := "12121211122"
    j := len(s)
    for i := 0; i < 3 && j > 0; i++ {
        _, size := utf8.DecodeLastRuneInString(s[:j])
        j -= size
    }
    lastByRune := s[j:]
    

    You can also convert the string to a []rune and operate on the rune slice, but that allocates memory.

    0 讨论(0)
提交回复
热议问题