How to split a string with a comma ignoring the comma in double quotes

This question has been asked before, but I'm trying to find a solution in powershell , but I am not getting the desired results.

$line = '1,2,"N",09/04/13,"P09042013ZSD(1,0)","ZSD"'
[string[]] $splitColumns = $line.Split('(,)(?=(?:[^"]|"[^"]*")*$)', [StringSplitOptions]'RemoveEmptyEntries')

When I loop the split values ​​that I expect

1
2
"N"
09/04/13
"P09042013ZSD(1,0)"
"ZSD"

But I get

1
2
N
09/04/13
P09042013ZSD
1
0
ZSD

I checked the regex using http://regexhero.net/tester/ (Split) using the ExplicitCapture set and it returns the desired results.

Working solution

$RegexOptions = [System.Text.RegularExpressions.RegexOptions]
$csvSplit = '(,)(?=(?:[^"]|"[^"]*")*$)'

$splitColumns = [regex]::Split("StringHere", $csvSplit, $RegexOptions::ExplicitCapture)
+5
source share
1 answer

[string].split()the method does not accept regexon split, but simply [char[]]or [string[]].

You can try the following:

 $line -split ',(?=(?:[^"]|"[^"]*")*$)' 

powershell -splitaccept regexto split text

Using .net, you can do it like this:

[regex]::Split( $line , ',(?=(?:[^"]|"[^"]*")*$)' )
+6

All Articles