How do I avoid trailing empty items being removed when splitting strings?

I am doing:

"b::::c:::".split(':')

Result:

["b", "", "", "", "c", "", ""] # expect
["b", "", "", "", "c"] # actual

What is the problem here? how can i get what i expected.

Answers 1

  • There's a limit parameter to .split(pattern=$;, [limit]). If limit is omitted, trailing null fields are suppressed. You need to provide a negative limit

    "b::::c:::".split(':', -1) 
    

    but bear in mind that this will return three "" values at the end of the array.

    result: ["b", "", "", "", "c", "", "", ""] 
    

Related Articles