F# Split Strings

Split. A string contains many values. It has names of animals separated by commas. We must split this string. Splitting is not exciting. But it is useful.
With Split, a method on the String type in the .NET Framework, we receive a String array. And with the helpful Seq.toList we can convert his into an F# list for further use.
Simple example. We introduce a string with three fields separated by commas. We call the Split method with a single comma char—this is expanded to a char array.

Array: We receive a string array from Split containing 3 elements. We use a for-in loop to display them to the screen.

F# program that uses Split let animals = "bear,frog,eagle" // Split on the comma. // ... This is creating a single-element character array for us. let result = animals.Split ',' // Loop over and display strings. for value in result do printfn "%A" value Output "bear" "frog" "eagle"
Seq.toList. This example adds some complexity. We introduce a splitLine function. This receives a string and calls Split on it. Then it returns the result of Seq.toList.Seq

So: When we invoke splitLine on a string, we can access the data in an F# list.

F# program that uses split, Seq.toList // Create a splitLine function. // ... It uses Seq.toList on the result of line.Split. // So we can access a list. let splitLine = (fun (line : string) -> Seq.toList (line.Split ',')) // Split this line into a list. let plants = "turnip,carrot,lettuce" let result = splitLine plants // Display our results in a for-loop. for value in result do printfn "%A" value Output "turnip" "carrot" "lettuce"
String separator. With Split() we can separate a string based on a substring delimiter. We create a string array containing all delimiters and pass it to Split.

RemoveEmptyEntries: This is part of the System namespace. With it, empty array elements are removed before Split returns.

Result: The items string has an empty string between two delimiters. But this is not part of the result.

F# program that uses Split, string separator, RemoveEmptyEntries open System let items = "keyboard; mouse; ; monitor" // Call split with a string array as the first argument. // ... This splits on a two-char sequence. // Also remove empty array elements. let result = items.Split([|"; "|], StringSplitOptions.RemoveEmptyEntries) // Print all elements in the array with Seq.iter. Seq.iter (fun x -> printfn "%A" x) result Output "keyboard" "mouse" "monitor"
Multiple delimiters. Here we Split on two different character delimiters. We provide a char array to Split() as the first argument. We use a for-loop to print results.
F# program that uses Split, for-loop let clothes = "" // Split on two different characters. let result = clothes.Split([|'.'; ':'|]) // Print results with for-loop. for r in result do printfn "%s" r Output pants shoes socks
To summarize: F# adds no special splitting methods. But it allows easy access to the powerful .NET Framework string split method. With some conversion, we can split into a list.
Dot Net Perls
© 2007-2020 Sam Allen. Every person is special and unique. Send bug reports to