2014-02-16 8 views
6

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?

Antwort

Verwandte Themen