Ce face bytes.Split
bytes.Split(s, sep) funcționează ca strings.Split: taie la fiecare apariție a lui sep și returnează bucățile ca [][]byte. Bucățile nu sunt copii: arată spre aceeași memorie ca s.
bytes.Join(s, sep) face invers, ca strings.Join: creează un slice nou cu toate bucățile și separatorul între ele.
Parametri
| Parametru | Descriere |
|---|---|
s |
Datele (la Split) sau lista de bucăți (la Join). |
sep |
Separatorul. |
Ce returnează
Split: [][]byte. Join: un []byte nou.
Exemple
Exemplul 1: Rânduri și câmpuri dintr-un fișier citit ca octeți
package main
import (
"bytes"
"fmt"
)
func main() {
continut := []byte("Ana;10\nIon;8\nMaria;9")
for _, rand := range bytes.Split(continut, []byte("\n")) {
campuri := bytes.Split(rand, []byte(";"))
fmt.Printf("%s are %s\n", campuri[0], campuri[1])
}
}
Rezultat
Ana are 10
Ion are 8
Maria are 9
Exemplul 2: Join și memoria comună a bucăților
package main
import (
"bytes"
"fmt"
)
func main() {
date := []byte("iasi,cluj,brasov")
parti := bytes.Split(date, []byte(","))
fmt.Println(string(bytes.Join(parti, []byte(" | "))))
parti[0][0] = 'I' // modifică și „date”
fmt.Println(string(date))
}
Rezultat
iasi | cluj | brasov
Iasi,cluj,brasov
Greșeli frecvente
- Păstrezi bucățile lui Split și apoi refolosești bufferul inițial pentru alte date: bucățile se schimbă și ele. Copiază-le cu
bytes.Clonedacă trebuie păstrate.
Comenzi înrudite
strings.Split: Împarte textul în bucăți după un separator exact; SplitN limitează numărul de bucăți, SplitAfter păstrează separatorul.strings.Join: Lipește textele dintr-un slice într-un singur text, cu un separator între ele.bytes.Contains: Variantele pentru []byte ale funcțiilor strings.Contains, strings.TrimSpace și strings.ToUpper.bytes.Buffer.ReadString: Citește din buffer până la un caracter-delimitator (inclusiv), ca text (ReadString) sau octeți (ReadBytes).