Wykonałem funkcję podziału na wyrażenie regularne w oparciu o zachowanie funkcji podziału regex w java, C#, php .... Zwraca ona tylko tablicę ciągów, bez informacji o indeksie.
func RegSplit(text string, delimeter string) []string {
reg := regexp.MustCompile(delimeter)
indexes := reg.FindAllStringIndex(text, -1)
laststart := 0
result := make([]string, len(indexes) + 1)
for i, element := range indexes {
result[i] = text[laststart:element[0]]
laststart = element[1]
}
result[len(indexes)] = text[laststart:len(text)]
return result
}
przykład:
fmt.Println(RegSplit("a1b22c333d", "[0-9]+"))
wynik:
[a b c d]
Próbowałem tego, ale to nadpisuje postać, którą chcę podzielić. Nie chcę stracić postaci, wystarczy wstawić spację. Użyłem pętli for, aby dostać się do mojego celu. Dzięki. PS - Twoja odpowiedź nie zawierała wyrażeń regularnych, może dlatego jest głosowanie odmowne? – Brenden
Nic nie jest "nadpisywane", to tylko kwestia tego, co zostało zwrócone. Jeśli chcesz, możesz zawsze użyć innej funkcji wyrażeń regularnych, aby uzyskać indeksy i użyć ich. –