diff --git a/README.md b/README.md index 6801c9d..b41a9c0 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ pairing with smart people at Hashrocket. For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186). -_1523 TILs and counting..._ +_1524 TILs and counting..._ --- @@ -402,6 +402,7 @@ _1523 TILs and counting..._ - [Do Something N Times](go/do-something-n-times.md) - [Find Executables Installed By Go](go/find-executables-installed-by-go.md) - [Not So Random](go/not-so-random.md) +- [Parse A String Into Individual Fields](go/parse-a-string-into-individual-fields.md) - [Replace The Current Process With An External Command](go/replace-the-current-process-with-an-external-command.md) - [Sleep For A Duration](go/sleep-for-a-duration.md) - [Upgrading From An Older Version On Mac](go/upgrading-from-an-older-version-on-mac.md) diff --git a/go/parse-a-string-into-individual-fields.md b/go/parse-a-string-into-individual-fields.md new file mode 100644 index 0000000..75b4485 --- /dev/null +++ b/go/parse-a-string-into-individual-fields.md @@ -0,0 +1,39 @@ +# Parse A String Into Individual Fields + +Let's say you're reading in data from a file or otherwise dealing with an +arbitrary string of data. If that string has a series of values separated by +whitespace, you can parse it into individual fields with +[`strings.Fields`](https://pkg.go.dev/strings#Fields). + +```go +import ( + "fmt" + "strings" +) + +func main() { + data := "3 5 2 6 7 1 9" + fields := strings.Fields(data) + + fmt.Printf("Fields: %v", fields) + // [3 5 2 6 7 1 9] +} +``` + +Here is another example where we can see that `strings.Fields` deals with +multiple whitespace and surrounding whitespace: + +```go +import ( + "fmt" + "strings" +) + +func main() { + data := " go java c++ rust " + fields := strings.Fields(data) + + fmt.Printf("%v", fields) + // [go java c++ rust] +} +```