日期:2014-05-18  浏览次数:20948 次

String.Splite()的问题
Splite在拆分字符串时非常有用,但我在处理CSV文件时遇到问题,CSV文件是用逗号","来分列的,如下:
张三,男,20,这小子不是好人
这种情况用splite函数处理是没有问题题,但有时值中会含有逗号,这时excel会用引号把值包起来,如下:
张三,男,20,"这小子是个党员,不是好人"
这种情况简单用Splite处理就不行了,虽然自己写代码分析也能处理,但很烦,最主要是容易出错,埋下隐患,有没有什么简单的处理方法?

------解决方案--------------------
坐等高手,貌似正则可以。。
------解决方案--------------------
C# code
        string s = @"张三,男,20,""这小子是个党员,不是好人""";
        string[] rs = Regex.Split(s, @"(?<=^\w+|,\w+),");
        foreach (string r in rs)
            Console.WriteLine(r.Trim('"'));

------解决方案--------------------
楼上正解,这样得用正则。
------解决方案--------------------
探讨

或者直接这样:
C# code
string s = @"张三,男,20,""这小子是个党员,不是好人""";
string[] rs = Regex.Split(s, @"(?<=^\w+|,\w+)[,""]+");
foreach (string r in rs)
Response.Write(r + "<br/>……