Si j'ai la chaîne "12121211122" et que je souhaite obtenir les 3 derniers caractères (par exemple, "122"), est-ce possible dans Go? J'ai regardé dans le paquetage string
et je n'ai rien vu qui ressemble à getLastXcharacters
.
Vous pouvez utiliser une expression slice expression sur une chaîne pour obtenir les trois derniers octets.
s := "12121211122"
first3 := s[0:3]
last3 := s[len(s)-3:]
Ou si vous utilisez Unicode, vous pouvez faire quelque chose comme:
s := []rune("世界世界世界")
first3 := string(s[0:3])
last3 := string(s[len(s)-3:])
Vérifiez chaînes, octets, runes et caractères dans Go et astuces de tranches .
La réponse dépend de ce que vous entendez par "caractères". Si vous voulez dire octets alors:
s := "12121211122"
lastByByte := s[len(s)-3:]
Si vous voulez dire des runes dans une chaîne encodée en utf-8, alors:
s := "12121211122"
j := len(s)
for i := 0; i < 3 && j > 0; i++ {
_, size := utf8.DecodeLastRuneInString(s[:j])
j -= size
}
lastByRune := s[j:]
Vous pouvez également convertir la chaîne en une rune [] et opérer sur la tranche de rune, mais cela alloue de la mémoire.