Wie kann ich die Position einer Teilzeichenfolge in einer Zeichenfolge in Zeichen (oder Runen) anstelle von Bytes wissen?Position in Zeichen einer Teilzeichenfolge in Go
strings.Index(s, sub)
wird die Position in Bytes geben. Bei der Verwendung von Unicode, ist es nicht die Position in Runen entspricht: http://play.golang.org/p/DnlFjPaD2j
func main() {
s := "áéíóúÁÉÍÓÚ"
fmt.Println(strings.Index(s, "ÍÓ"))
}
Ergebnis: 14. Erwartet: 7
Natürlich, ich s
und sub
-[]rune
und suche die subslice umwandeln könnte manuell Aber gibt es einen besseren Weg?
In Verbindung damit, um die ersten n
Zeichen einer Zeichenfolge zu erhalten, mache ich das: string([]rune(s)[:n])
. Ist es der beste Weg?