当前位置: 首页 > 编程语言 > C#

asp.netCSVString转String分享

时间:2023-04-10 22:12:03 C#

asp.netCSVString转String有没有简单的方法把csv格式的字符串转成string[]或list?我可以保证数据中没有逗号。字符串[]splitString=origString.Split(',');(下面的评论不是由原始回答者添加的)请记住,这个答案解决了保证数据中没有逗号的特定情况。String.Split只是不会削减它,但Regex.Split可能-试试这个:usingSystem.Text.RegularExpressions;字符串[]行;line=Regex.Split(输入,",(?=(?:[^"]*"[^"]*")*(?![^"]*")))");“输入”是csv行。这将处理带引号的定界符,并应返回表示行中每个字段的字符串数组。如果您想要强大的CSV处理,请查看FileHelpers尝试:Regexrex=newRegex(",(?=([^"]*"[^"]*")*(?![^"]*"))");string[]values=rex.Split(csvLine);来源:http://weblogs.asp.net/prieck/archive/2004/01/16/59457.aspx你可以看看使用Microsoft.VisualBasicAssemblyMicrosoft.VisualBasic.FileIO.TextFieldParser它处理CSV(或任何分隔符)带引号。我最近发现它非常方便。如果您想要带引号的元素嵌入逗号,尤其是当它们与非引号字段混合时,没有一种简单的方法可以做到这一点。您可能还想将行转换为字典,以列名作为键。我为此所做的代码只有几百行。我认为网上有一些例子,开源项目等。试试这个;staticIEnumerableCsvParse(stringinput){//null字符串返回一个包含null的单元素枚举。if(input==null){yieldreturnnull;屈服休息;}//我们将“吃掉”字符串的一部分直到它消失。字符串剩余=输入;while(remaining.Length>0){if(remaining.StartsWith("""))//处理引号{remaining=remaining.Substring(1);//传递初始引号。//找到结束引号。intendQuotePosition=remaining.IndexOf(""");switch(endQuotePosition){case-1://未关闭的报价。thrownewArgumentOutOfRangeException("Unclosedquote");case0://空引号yieldreturn"";剩余=remaining.Substring(2);休息;默认值:字符串引用=remaining.Substring(0,endQuotePosition).Trim();剩余=remaining.Substring(endQuotePosition+1);收益率回报报价;休息;}}else//处理逗号{intnextComma=remaining.IndexOf(",");switch(nextComma){case-1://没有更多的逗号——读到结束收益回报remaining.Trim();屈服休息;case0://空单元格yieldreturn"";剩余=remaining.Substring(1);休息;默认值://获取所有内容,直到下一个逗号字符串cell=remaining。Substring(0,nextComma).Trim();剩余=remaining.Substring(nextComma+1);产量回报细胞;休息;}}}}CsvString.split(',');string[]lines=System.IO.File.ReadAllLines("yourfile.csv");然后循环并拆分行(这很容易出错,因为它不检查引号分隔字段中的逗号):foreach(stringlineinlines){string[]items=line.Split({','}};}strings="1,2,3,4,5";stringmyStrings[]=s.Split({','}};注意Split()需要分组的字符数组一些CSV文件有带双引号的值和逗号。所以有时你可以拆分这个字符串文字:“,”带引号字段的Csv文件不是Csv文件。当你在“另存为”中选择“Csv”时,更多的东西(Excel)输出没有引号而不是引号。如果你想要一个你可以使用,免费或提交,这也是我的IDataReader/Record。它还使用DataTable来定义/转换/强制执行列和DbNull。http://github.com/claco/csvdatareader/它没有被引用..但是。我扔了几天前就在一起了,挠痒痒了。忘记分号:不错的链接。谢谢。cfeduke:感谢给Microsoft.VisualBasic.FileIO.TextFieldParser的提示。今晚进入CsvDataReader。http://github.com/claco/csvdatareader/已使用cfeduke建议的TextFieldParser更新。只是一些远离暴露定界符/修剪空格/类型的道具,你只需要窃取代码。我已经拆分了标签,所以这对我有用:以上是C#学习教程:asp.netConvertingCSVStringstoStrings如果它对任何人有用并且需要了解更多关于C#学习教程,我希望你付出代价更多关注它——publicstaticstringCsvToTabDelimited(stringline){varret=newStringBuilder(line.Length);boolinQuotes=false;for(intidx=0;idxstringtest="one,two,three";string[]okNow=test.Split(',');separationChar[]={';'};//或't'','等varstrArray=strCSV.Split(separationChar);string[]splitStrings=myCsv.Split(",".ToCharArray());本文收集自网络,不代表立场,如涉及侵权,请点击右侧联系管理员删除,如需转载请注明出处: