Splitting comma-seperated items

  • Thread starter Thread starter MSNEWS
  • Start date Start date
M

MSNEWS

Hi

i need to extract all items between commas into a string array from the
following line, but there is a comma in one of the items (between strings)
eg "MICHEAL JACKSON, AAMC" , i used String.Split() method but it fails.

9006374,7912103,0,"MICHEAL JACKSON, AAMC","102-3085146-8388914"

can anyone help out

TIA
Barry
 
i need to extract all items between commas into a string array from the
following line, but there is a comma in one of the items (between strings)
eg "MICHEAL JACKSON, AAMC" , i used String.Split() method but it fails.

9006374,7912103,0,"MICHEAL JACKSON, AAMC","102-3085146-8388914"

can anyone help out

Will there always be 5 elements in the string? I.e.

9006374
7912103
0
"MICHEAL JACKSON, AAMC"
"102-3085146-8388914"

If so, then it's a fairly trivial exercise:

string strLineIn = <read in your line>;
List<string> lstElements = new List<string>(strLineIn.Split(','));
string strElement1 = lstElements[0];
string strElement2 = lstElements[1];
string strElement3 = lstElements[2];
string strElement5 = lstElements[lstElements.Count - 1];
lstElements.RemoveAt(0);
lstElements.RemoveAt(0);
lstElements.RemoveAt(0);
lstElements.RemoveAt(lstElements.Count - 1);
string strElement4 = String.Empty;
foreach (string strElement in lstElements)
{
strElement4 += strElement + ",";
}
strElement4 = strElement4.TrimEnd(',');

N.B. there are almost certainly cleverer / more efficient ways of doing
this...
 
Hi,

You can try the following regular expression

Regex regex = new
Regex("((?<field>[^\",\\r\\n]+)|\"(?<field>([^\"]|\"\")+)\")(,|(?<rowbreak>\\r\\n|\\n|$))");
foreach(Match match in regex.Matches(s))
{
Console.WriteLine(match.Value);
}

The result will include the comma and the quotes as follows

9006374,
7912103,
0,
"MICHEAL JACKSON, AAMC",
"102-3085146-8388914"

Hope this helps
 
Regex is a great way to go. I would say that an alteration of the method, to
change the commas not in the middle of quotes, so you could split, would be
faster for what he is trying to do. :-)

--
Gregory A. Beamer
MVP; MCP: +I, SE, SD, DBA
http://gregorybeamer.spaces.live.com

*********************************************
Think outside the box!
*********************************************
Chris Taylor said:
Hi,

You can try the following regular expression

Regex regex = new
Regex("((?<field>[^\",\\r\\n]+)|\"(?<field>([^\"]|\"\")+)\")(,|(?<rowbreak>\\r\\n|\\n|$))");
foreach(Match match in regex.Matches(s))
{
Console.WriteLine(match.Value);
}

The result will include the comma and the quotes as follows

9006374,
7912103,
0,
"MICHEAL JACKSON, AAMC",
"102-3085146-8388914"

Hope this helps

--
Chris Taylor
http://dotnetjunkies.com/weblog/chris.taylor


MSNEWS said:
Hi

i need to extract all items between commas into a string array from the
following line, but there is a comma in one of the items (between
strings) eg "MICHEAL JACKSON, AAMC" , i used String.Split() method but
it fails.

9006374,7912103,0,"MICHEAL JACKSON, AAMC","102-3085146-8388914"

can anyone help out

TIA
Barry
 
Back
Top