日期:2014-05-17 浏览次数:20816 次
/*
表头 col1 col2 col3
数据 1qqq 2d,a ers
数据 1qqq 2d ers
直接从csv文件用readline读出来的字符串为:
string s ="1qqq,\"2d,a\",ers";
string s1 ="1qqq,2d,ers";
csv是以逗号分割每列的数据,但是我的数据中也有逗号,所以直接以逗号分割的话对于插入datatable会有问题。
字符串s1可以正常分割得到3列数据
1qqq
2d
ers
但是字符串s以逗号分割的话,就会得到4列数据
1qqq
2d
a
ers
显然不是我想要的。
现在想得到字符串s分割后的数据为
1qqq
2d,a
ers
数据2d,a中的逗号仍然保留。
补充一下,csv文件中如果你的数据中带有逗号如:abc,def
读取出来的数据会变成\"abc,def\"
*/
private static IEnumerable<string> 分割(string s)
{
var t1 = 某符号的所有位置(s, ',').ToList();
var t2 = 某符号的所有位置(s, '"').ToList();
for (var i = 0; i < t2.Count; i += 2)
t1.Where(x => x > t2[i] && x < t2[i + 1])
.ToList()
.ForEach(x => t1.Remove(x));
for (int i = 0, start = 0; i < t1.Count; start = t1[i] + 1, i++)
yield return s.Substring(start, t1[i] - start);