Подтвердить что ты не робот

Как получить последние символы X строки Golang?

Если у меня есть строка "12121211122", и я хочу получить последние 3 символа (например, "122" ), возможно ли это в Go? Я посмотрел в пакете string и не видел ничего подобного getLastXcharacters.

4b9b3361

Ответ 1

Вы можете использовать выражение slice в строке, чтобы получить последние три байта.

s      := "12121211122"
first3 := s[0:3]
last3  := s[len(s)-3:]

Или, если вы используете юникод, вы можете сделать что-то вроде:

s      := []rune("世界世界世界")
first3 := string(s[0:3])
last3  := string(s[len(s)-3:])

Отметьте Строки, байты, руны и символы в Go и Ловкие трюки.

Ответ 2

Ответ зависит от того, что вы подразумеваете под "персонажами". Если вы имеете в виду байты, то:

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

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