如何获取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:]) 

检查Strings, bytes, runes and characters in GoSlice Tricks

+0

感谢。怎么样得到前3个字符? – sourcey 2014-10-02 18:25:55

+0

@sourcey更新了答案。 – OneOfOne 2014-10-02 18:32:58

+0

@tommywild来自http://blog.golang.org/slices:字符串实际上非常简单:它们只是***字节的只读片段,带有语言的额外语法支持。 – OneOfOne 2014-10-02 19:03:09

答案取决于你所说的“字”是什么。如果你的意思是字节,则:

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:] 

您也可以将字符串转换为[]符文和符文的操作切片,但分配内存。