14

3 ways to split a string into a slice

 3 years ago
source link: https://yourbasic.org/golang/split-string-into-slice/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

3 ways to split a string into a slice

yourbasic.org/golang
cherry-cocktail-split.jpg

Split on comma or other substring

Use the strings.Split function to split a string into its comma separated values.

s := strings.Split("a,b,c", ",")
fmt.Println(s)
// Output: [a b c]

To include the separators, use strings.SplitAfter. To split only the first n values, use strings.SplitN and strings.SplitAfterN.

You can use strings.TrimSpace to strip leading and trailing whitespace from the resulting strings.

Split by whitespace and newline

Use the strings.Fields function to split a string into substrings removing any space characters, including newlines.

s := strings.Fields(" a \t b \n")
fmt.Println(s)
// Output: [a b]

Split on regular expression

In more complicated situations, the regexp Split method might do the trick.

It splits a string into substrings separated by a regular expression. The method takes an integer argument n; if n >= 0, it returns at most n substrings.

a := regexp.MustCompile(`a`)              // a single `a`
fmt.Printf("%q\n", a.Split("banana", -1)) // ["b" "n" "n" ""]
fmt.Printf("%q\n", a.Split("banana", 0))  // [] (nil slice)
fmt.Printf("%q\n", a.Split("banana", 1))  // ["banana"]
fmt.Printf("%q\n", a.Split("banana", 2))  // ["b" "nana"]

zp := regexp.MustCompile(` *, *`)             // spaces and one comma
fmt.Printf("%q\n", zp.Split("a,b ,  c ", -1)) // ["a" "b" "c "]

See this Regexp tutorial and cheat sheet for a gentle introduction to the Go regexp package with plenty of examples.

Further reading

40+ practical string tips [cheat sheet]

Share:             


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK