Split a comma-separated string into a list of fields.
← Operators and Expressions · Ref: Q1165
Use the split method with a RegEx parameter:
fields <- line.split(/,/)
The split() method takes a RegEx and returns a List of String. You can then stream the result with cat or access individual elements. See Q33 for regular expressions. See Q175 for string transform patterns.
Example
defines module qa.operators.splitstring defines program SplitStringDemo() stdout <- Stdout() // Split a CSV line by comma csvLine <- "Alice,Bob,Charlie,Diana" fields <- csvLine.split(/,/) stdout.println(`Fields: ${fields}`) // Stream the split results stdout.println("Individual fields:") cat fields > stdout // Split with more complex regex (whitespace) sentence <- "Hello World EK9" words <- sentence.split(/ +/) stdout.println(`Words: ${words}`) // Split and count fieldCount <- length fields stdout.println(`Number of fields: ${fieldCount}`)
Common mistakes
E50060 — split() takes a RegEx (delimited by '/'), not a String - use /,/ not ",". See ek9 -h E50060 for details.
Incorrect:
fields <- csvLine.split(",")
Correct:
fields <- csvLine.split(/,/)
Other ways to ask this
- Write code to split a CSV line by commas into separate fields
- I have a comma-delimited string and need each field as a list element
- Given "Alice,Bob,Charlie", produce a list ["Alice", "Bob", "Charlie"]
- In Java I'd use str.split(","). Write the EK9 equivalent
Coming from another language?
Java: str.split(",") returns String[]. Python: str.split(",") returns list. Rust: str.split(',').collect(). Go: strings.Split(str, ","). EK9: str.split(/,/) takes RegEx, returns List of String.
Keywords: list, parse, comma, csv, delimiter, string, regex, split, fields