Как узнать позицию подстроки в строке в символах (или рунах) вместо байтов?Позиция в символах подстроки в Go
strings.Index(s, sub)
предоставит позицию в байтах. При использовании Unicode, это не соответствует позиции в рунах: http://play.golang.org/p/DnlFjPaD2j
func main() {
s := "áéíóúÁÉÍÓÚ"
fmt.Println(strings.Index(s, "ÍÓ"))
}
Результат: 14. Ожидаемое: 7
Конечно, я мог бы преобразовать s
и sub
в []rune
и искать subslice вручную , но есть ли лучший способ сделать это?
Относительно этого, чтобы получить первые n
символов строки Я делаю это: string([]rune(s)[:n])
. Это лучший способ?