String nach Länge in Golang aufteilen

8

Kann jemand eine Zeichenfolge in Golang nach Länge aufteilen?

Zum Beispiel um "helloworld" nach jeweils 3 Zeichen zu teilen, sollte es idealerweise ein Array von "hel" "low" "orl" "d" zurückgeben?

Alternativ wäre es auch möglich, nach jeweils 3 Zeichen einen Zeilenumbruch anzuhängen.

Alle Ideen werden sehr geschätzt!

    
Fernando Parra 05.09.2014, 12:37
quelle

4 Antworten

17

Achten Sie darauf, in Ihr string in ein Stück Rune: Siehe " Zeichenfolge in Buchstaben aufteilen "

%Vor%

a[n:n+3] funktioniert am besten, wenn du ein Stück Rune bist.

Der Index wird in jeder Rune um eins erhöht, während er in einem Slice der Zeichenkette : "世界": i wäre 0 und 3: Ein Zeichen (Rune) kann aus mehreren Bytes bestehen.

Betrachten wir zum Beispiel s := "世a界世bcd界efg世" : 12 Runen. (Siehe play.golang.org )

Wenn Sie versuchen, es byteweise zu parsen, werden Sie (in einer naiven Aufteilung alle 3 Zeichen Implementierung) einige der "Index modulo 3" (entspricht 2, 5, 8 und 11) verpassen, weil der Index wird Erhöhen Sie diese Werte:

%Vor%

Die Ausgabe:

%Vor%

Aber wenn du Runen ( a := []rune(s) ) iterieren würdest, würdest du das bekommen, was du erwartest, da der Index eine Rune auf einmal erhöht, was es einfach macht, genau 3 Zeichen zu sammeln:

%Vor%

Ausgabe:

%Vor%     
VonC 05.09.2014 12:51
quelle
2

Benötigt auch eine Funktion, um dies kürzlich zu tun, siehe Beispielverwendung hier

%Vor%     
mozey 06.09.2016 10:50
quelle
1

Hier ist ein weiteres Beispiel (Sie können es hier ausprobieren):

%Vor%     
rinat.io 27.01.2018 18:53
quelle
-1

Eine einfache Lösung mit Regex

re: = regexp.MustCompile ( (\S{3}) ) x: = re.FindAllStringSubmatch ("HelloWorld", -1) fmt.Println (x)

Ссылка

    
rahul 10.02.2018 06:30
quelle

Tags und Links