Ce face regexp.Regexp.Split
re.Split(s, n) taie textul la fiecare potrivire a expresiei și returnează bucățile dintre ele. Este ca strings.Split, dar separatorul poate fi un tipar: „virgulă sau punct și virgulă, urmate de oricâte spații”.
n limitează numărul de bucăți: -1 înseamnă toate, 0 returnează nil, iar un număr pozitiv dă cel mult atâtea bucăți (ultima conține restul). Dacă textul începe sau se termină cu un separator, apar bucăți goale la capete.
Parametri
| Parametru | Descriere |
|---|---|
s |
Textul de împărțit. |
n |
Numărul maxim de bucăți (-1 = toate). |
Ce returnează
Un slice []string cu bucățile.
Exemple
Exemplul 1: Separatori amestecați
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`\s*[,;]\s*`)
fmt.Printf("%q\n", re.Split("Iași, Cluj;Brașov , Timișoara", -1))
fmt.Printf("%q\n", re.Split("Iași, Cluj;Brașov , Timișoara", 2))
fmt.Printf("%q\n", re.Split(", Iași,", -1))
}
Rezultat
["Iași" "Cluj" "Brașov" "Timișoara"]
["Iași" "Cluj;Brașov , Timișoara"]
["" "Iași" ""]
Exemplul 2: Propoziții dintr-un text
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`[.!?]+\s*`)
text := "Bună ziua! Ce mai faci? Eu sunt bine... Mulțumesc."
for i, p := range re.Split(text, -1) {
if p != "" {
fmt.Printf("%d: %s\n", i+1, p)
}
}
}
Rezultat
1: Bună ziua
2: Ce mai faci
3: Eu sunt bine
4: Mulțumesc
Greșeli frecvente
- Uiți de bucățile goale de la capete când textul începe sau se termină cu separator. Filtrează-le sau curăță textul înainte cu
strings.Trim. - Folosești
regexp.Splitpentru un separator fix.strings.Spliteste mai simplu și mai rapid; pentru spații,strings.Fields.
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.Fields: Împarte textul în cuvinte după spații (oricâte, inclusiv tab și rând nou); FieldsFunc după o condiție a ta.regexp.Regexp: O expresie regulată compilată: o creezi o dată cu Compile sau MustCompile și o folosești de oricâte ori (MatchString, Find…, Replace…).