Как получить последние X символов строки Golang?
Если у меня есть строка "12121211122" и я хочу получить последние 3 символа (например, "122"), возможно ли это в Go? Я посмотрел в string
пакет и не видел ничего подобного getLastXcharacters
,
2 ответа
Решение
Вы можете использовать выражение среза для строки, чтобы получить последние три байта.
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:])
Проверьте строки, байты, руны и символы в Go и Slice Tricks.
Ответ зависит от того, что вы подразумеваете под "персонажами". Если вы имеете в виду байты, то:
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:]
Вы также можете преобразовать строку в руну [] и работать со срезом руны, но это выделяет память.