![]() |
Languages »
C# »
General
Intermediate
License: The Common Development and Distribution License (CDDL)
Parsing CSV embedded in double quotes - RFC 4180By vrg786Simple ways to parse CSV documents when values are embedded in double quotes |
C# 2.0, Windows, .NET 2.0VS2005, Dev
|
||||||||
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||
This is how CSV can be parsed when they are embedded in double quotes.
The article in based on RFC 4180 which states that the standered CSV may contain values seperated by COMMA and embeddedin DOUBLEQUOTE.
Take a look at the RFC >> http://tools.ietf.org/html/rfc4180
Blocks of code should be set as style "formatted" like this:
// Code
/// <summary>
/// RFC 4180 Comma Seperated Values
/// http://tools.ietf.org/html/rfc4180
/// </summary>
/// <param name="line">Single line from CSV file</param>
public string[] SplitOnDoubleQuotes(string line)
{
int i = 0;
ArrayList occurs = new ArrayList();
if (line.IndexOf('\n') <= 0)
line = line + '\n';
while (true)
{
if (line[i] == '\n')
break;
if (line[i] == ',')
if (line[i-1] == '"' && line[i+1] == '"')
occurs.Add(i);
i++;
}
line= line.Remove(line.Length - 1);
ArrayList tokens = new ArrayList();
int startIdx =0;
int endIdx;
int len ;
for(int t =0; t<= occurs.Count ; t++)
{
if (t != occurs.Count)
{
len = (int)occurs[t] - startIdx;
tokens.Add((line.Substring(startIdx, len).StartsWith(
",") == true) ? line.Substring(startIdx, len).Remove(
0,1):line.Substring(startIdx, len) );
startIdx = (int)occurs[t];
}
else
{
tokens.Add((line.Substring(startIdx).StartsWith(",") == true) ?
line.Substring(startIdx).Remove(0, 1) : line.Substring(
startIdx));
}
}
i=0;
for (i = 0; i < tokens.Count;i++ )
{
string str = tokens[i].ToString();
if (str.StartsWith("\"", StringComparison.Ordinal))
str= str.Remove(0, 1);
if (str.EndsWith("\""))
str= str.Remove(str.Length - 1);
tokens[i] = str;
}
return (string[])tokens.ToArray(typeof(string));
}
There are many possible ways to it, and this is just one of it.
Here are the possible ways:
I hope this code might have been useful for beginners.
-Vaibhav Gaikwad
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 3 May 2007 Editor: |
Copyright 2007 by vrg786 Everything else Copyright © CodeProject, 1999-2009 Web15 | Advertise on the Code Project |