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