Как получить последние 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:]

Вы также можете преобразовать строку в руну [] и работать со срезом руны, но это выделяет память.

Другие вопросы по тегам