如何获取Golang字符串的最后X个字符?
问题描述:
如果我有字符串“12121211122”,我想获得最后3个字符(例如“122”),是可以进去吗?我查看了string
包,没有看到类似getLastXcharacters
的任何内容。如何获取Golang字符串的最后X个字符?
答
您可以在字符串中使用一个slice expression获得最后三个字节。
s := "12121211122"
first3 := s[0:3]
last3 := s[len(s)-3:]
或者如果你使用Unicode,你可以这样做:
s := []rune("世界世界世界")
first3 := string(s[0:3])
last3 := string(s[len(s)-3:])
答
答案取决于你所说的“字”是什么。如果你的意思是字节,则:
s := "12121211122"
lastByByte := s[len(s)-3:]
如果你的意思是符文在UTF-8编码的字符串,然后:
s := "12121211122"
j := len(s)
for i := 0; i < 3 && j > 0; i++ {
_, size := utf8.DecodeLastRuneInString(s[:j])
j -= size
}
lastByRune := s[j:]
您也可以将字符串转换为[]符文和符文的操作切片,但分配内存。
感谢。怎么样得到前3个字符? – sourcey 2014-10-02 18:25:55
@sourcey更新了答案。 – OneOfOne 2014-10-02 18:32:58
@tommywild来自http://blog.golang.org/slices:字符串实际上非常简单:它们只是***字节的只读片段,带有语言的额外语法支持。 – OneOfOne 2014-10-02 19:03:09