listview读csv双引号号逗号分隔数据解决方法

listview读csv双引号号逗号分隔数据
各位高手好,我在csv文件中的数据如下:
"C43","CAP1","58.039mm","84.582mm","58.039mm","80.772mm","58.039mm","80.772mm","T","360.00","CAP1"
"C41","CAP1","36.195mm","84.582mm","36.195mm","80.772mm","36.195mm","80.772mm","T","360.00","CAP1"
"C40","CAP1","58.039mm","70.358mm","58.039mm","66.548mm","58.039mm","66.548mm","T","360.00","CAP1"
想把它读进listview中,ccrun版主写的程序我稍微做了点修改如下:
C/C++ code
TStringList *lst = new TStringList;
lst->LoadFromFile("D:\\ccrun\\a.csv");

String strLine, str;
int n = 0;
for (int i = 0; i < lst->Count; i++)
{
    strLine = lst->Strings[i];

    TListItem *li = ListView1->Items->Add();

    while (strLine.Pos(","))
    {
        str = strLine.SubString(1, strLine.Pos(",") - 2);
        if (str.Length() > 2 && str[str.Length()] == 'm'
                && str[str.Length() - 1] == 'm')
            str = str.SubString(1, str.Length() - 2);

        strLine = strLine.SubString(strLine.Pos(",") + 2, strLine.Length());

        if (li->Caption.Length() < 1)
        {
            li->Caption = str;
            n = 0;
        }
        else
        {
            if (n < 4 || n > 7)
                li->SubItems->Add(str);
        }
        n++;
    }

    if (li->Caption.Length() < 1)
        li->Caption = strLine;
    else
        li->SubItems->Add(strLine);
}

delete lst;

运行程序后,在listview中显示如下:
"C43,CAP1,58.039,84.582,T,360.00,CAP1"
"C41,CAP1,36.195,84.582,T,360.00,CAP1"
"C40,CAP1,58.039,70.358,T,360.00,CAP1"
我想要把输出的每一行的两边的双引号"去掉,即变成如下的输出形式:
C43,CAP1,58.039,84.582,T,360.00,CAP1
C41,CAP1,36.195,84.582,T,360.00,CAP1
C40,CAP1,58.039,70.358,T,360.00,CAP1
弄了好长时间了,没有调试成功。请高手指点,谢谢!

------解决方案--------------------
部分代码:
for (int i = 0; i < lst->Count; i++)
{
strLine = lst->Strings[i];

TListItem *li = ListView1->Items->Add();

if(strLine.Pos("\"")==1) strLine= strLine.SubString(2, strLine.Length()- 1); //add
while (strLine.Pos(","))
{
str = strLine.SubString(1, strLine.Pos(",") - 2);
if (str.Length() > 2 && str[str.Length()] == 'm'
&& str[str.Length() - 1] == 'm')
str = str.SubString(1, str.Length() - 2);

//strLine = strLine.SubString(strLine.Pos(",") + 2, strLine.Length());
strLine = strLine.SubString(strLine.Pos(",") + 2, strLine.Length()-2);
if (li->Caption.Length() < 1)
{
li->Caption = str;
n = 0;
}
else
{
if (n < 4 || n > 7)
li->SubItems->Add(str);
}
n++;
}

if(strLine.Length()>1) strLine = strLine.SubString(1, strLine.Length()-1); //add
if (li->Caption.Length() < 1)
li->Caption = strLine;
else
li->SubItems->Add(strLine);
}
------解决方案--------------------
"C43 ->C43
CAP1"->CAP1
一个简单的字符串去掉 " 的操作
你上面的代码不看了, 至于你怎么弄成这样我更不看了
我就只眼前的结果 通过这个字符串操作来给你分析下:
从你结果可以发现 取每行的第一个元素 前面多了一个 ",取每行最后一个元素的时候 后面多了一个 "
这就是规律
所以取第一个和最后一个元素的时候 处理下就行了
相信这么一说你应该知道怎么做了