2014-02-16 2 views
6

Как узнать позицию подстроки в строке в символах (или рунах) вместо байтов?Позиция в символах подстроки в 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]). Это лучший способ?

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^