如何在写入文件之前在datatable中寻找位置

时间:2012-08-25 11:59:37

标签: c#-3.0

我有从csv文件中读取的数据表。然后通过行和列进行迭代,并在写入同时也是目标csv文件的文件之前附加每个值。我想将特殊字符(“/”)上的一列数据分成两列。例如,数据表的“类型”列是“women / shoes and handbags / guess”。我有另一个列'SubType',所以我想在写入之前将数据表中的一列分成两列。我只是想忽略猜测的第三种类型。有没有办法寻找位置“/”,在第二个“/”之后,我想将该值插入另一列数据表'SubType'。

    foreach (DataRow dRow in dtSor.Rows)
    {
        for (int i = 0; i < dtSor.Columns.Count; i++)
        {
            if (dRow[i].ToString().Contains(","))
            {
                dest_csv.Append("\"" + dRow[i].ToString() + "\"" + ",");
            }

            else if (dRow[i].ToString() == "")
            {
                dest_csv.Append("NULL" + ",");
            }

            else
            {
                dest_csv.Append(dRow[i].ToString() + ",");
                //dest_csv.Append(dRow[i].ToString());
            }

        }

        dest_csv.Remove(dest_csv.Length - 1, 1);
        dest_csv.Append(Environment.NewLine);
    }

    File.WriteAllText(destination_file, dest_csv.ToString(), Encoding.Default);
}

1 个答案:

答案 0 :(得分:0)

首先检查特殊字符是否在indexOf的字段中,然后split在araay中的特殊字符上的字段,并仅记录您所参与的部分。

像这样:

const char special = '\\';

string maintype ="";
string subtype ="";

string field = dRow[i].ToString();
if (field.IndexOf(special)>-1)
{
  string[] splitted = field.Split(special);
  maintype = splitted[0];
  subtype = splitted[1];
}