给定
2,1016,7 /2008分之3114:22,杰夫达尔加斯6 /二千零十一分之五22:21,http://stackoverflow.com, “科瓦利斯,OR”,7679,351,81,b437f461b3fd27387c5d8ab47a293d35,34
如何使用C#将上述信息拆分为字符串,如下所示:
2 1016 7/31/2008 14:22 Geoff Dalgas 6/5/2011 22:21 http://stackoverflow.com Corvallis, OR 7679 351 81 b437f461b3fd27387c5d8ab47a293d35 34
如您所见,其中一列包含,<=(科瓦利斯,俄勒冈州)
//更新//基于 C#正则表达式拆分- 引号外的逗号
string[] result = Regex.Split(samplestring, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
使用Microsoft.VisualBasic.FileIO.TextFieldParser该类。这将处理解析定界文件,TextReader或者Stream某些字段用引号引起来,而有些则没有。
Microsoft.VisualBasic.FileIO.TextFieldParser
TextReader
Stream
例如:
using Microsoft.VisualBasic.FileIO; string csv = "2,1016,7/31/2008 14:22,Geoff Dalgas,6/5/2011 22:21,http://stackoverflow.com,\"Corvallis, OR\",7679,351,81,b437f461b3fd27387c5d8ab47a293d35,34"; TextFieldParser parser = new TextFieldParser(new StringReader(csv)); // You can also read from a file // TextFieldParser parser = new TextFieldParser("mycsvfile.csv"); parser.HasFieldsEnclosedInQuotes = true; parser.SetDelimiters(","); string[] fields; while (!parser.EndOfData) { fields = parser.ReadFields(); foreach (string field in fields) { Console.WriteLine(field); } } parser.Close();
这将导致以下输出:
2 1016 7/31/2008 14:22 杰夫·达尔加斯(Geoff Dalgas) 6/6/2011 22:21 http://stackoverflow.com 俄勒冈州科瓦利斯 7679 351 81 b437f461b3fd27387c5d8ab47a293d35 34
有关更多信息,请参见Microsoft.VisualBasic.FileIO.TextFieldParser。
您需要Microsoft.VisualBasic在“添加引用.NET”选项卡中添加对的引用。
Microsoft.VisualBasic