如何得到一个 Golang 字符串的最后 X 个字符?

如果我有字符串“12121211122”,并且我想得到最后3个字符(例如“122”) ,那么在 Go 中可以吗?我看了 string包,没有看到任何类似 getLastXcharacters的东西。

107407 次浏览

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.

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.