Search code examples
scala

How can i split string to list using scala


i has string str = "one,two,(three,four), five"

I want to split this string into list, like this: List[String] = ("one", "two", "(three, four)", "five")?

i have no idea for this.

thanks


Solution

  • We can try matching on the pattern \(.*?\)|[^, ]+:

    val str = "one,two,(three,four), five"
    val re = """\(.*?\)|[^, ]+""".r
    for(m <- re.findAllIn(str)) println(m)
    

    This prints:

    one
    two
    (three,four)
    five
    

    This regex pattern eagerly first tries to find a (...) term. That failing, it matches any content other than comma or space, to consume one CSV term at a time. This trick avoids the problem of matching across commas inside (...).