将一行CSV(Comma Separated Value)格式的字符串分解成字符串列表,比如
一行csv格式数据:1,aa,"aa,bb","a,""b""",a
分解后:
1
aa
aa,bb
a,"b"
a
点这里下载一个简单的源程序.
界面:
private
List
<
string
>
SpliteLine(
string
line)
{
List < string > list = new List < string > ();
int count = 0 ;
string field = string .Empty;
foreach ( char c in line)
{
if (c == ' , ' )
{
if (count % 2 == 0 ) // 已经选择了一个列的数据
{
if (field.Length > 0 )
{
if (field.IndexOf( ' " ' ) == 0 )
{
field = field.Substring( 1 );
}
if (field.LastIndexOf( ' " ' ) == field.Length - 1 )
{
field = field.Substring( 0 , field.Length - 1 );
}
field = field.Replace( "/ "/" " , "/ " " );
}
list.Add(field);
field = string .Empty;
}
else
{
field += c;
}
}
else if (c == ' " ' )
{
field += c;
count ++ ;
}
else
{
field += c;
}
}
if (field != string .Empty)
{
list.Add(field);
field = string .Empty;
}
return list;
}
{
List < string > list = new List < string > ();
int count = 0 ;
string field = string .Empty;
foreach ( char c in line)
{
if (c == ' , ' )
{
if (count % 2 == 0 ) // 已经选择了一个列的数据
{
if (field.Length > 0 )
{
if (field.IndexOf( ' " ' ) == 0 )
{
field = field.Substring( 1 );
}
if (field.LastIndexOf( ' " ' ) == field.Length - 1 )
{
field = field.Substring( 0 , field.Length - 1 );
}
field = field.Replace( "/ "/" " , "/ " " );
}
list.Add(field);
field = string .Empty;
}
else
{
field += c;
}
}
else if (c == ' " ' )
{
field += c;
count ++ ;
}
else
{
field += c;
}
}
if (field != string .Empty)
{
list.Add(field);
field = string .Empty;
}
return list;
}