1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > C#正则表达式提取文本中以逗号间隔的数据

C#正则表达式提取文本中以逗号间隔的数据

时间:2024-02-22 18:21:37

相关推荐

C#正则表达式提取文本中以逗号间隔的数据

使用正则表达式提取文本数据到内存是很方便的技术,下面通过一个例子介绍一下如何使用正则表达式提取文本

文本中内容格式

1,2,3,4,5

2,2,2,2,2

3,3,3,3,3

C#代码如下

publicList<List<string>>GetDataCSV(stringpath){stringpattern=@"\d+";List<List<string>>data=newList<List<string>>();using(StreamReadersr=newStreamReader(@path,Encoding.GetEncoding("GB2312"))){stringnextline;MatchCollectionmyMatches;while((nextline=sr.ReadLine())!=null){myMatches=Regex.Matches(nextline,pattern);List<string>rowdata=newList<string>();;foreach(MatchnextmatchinmyMatches){rowdata.Add(nextmatch.Value);}data.Add(rowdata);}//消除最后的空行for(inti=data.Count-1;i>=0;i--){if(data[i].Count==0){data.Remove(data[i]);}else{break;}}}returndata;}

上面代码试用标准格式,逗号间都有数据,此外逗号间无数据如

1,2,3,4

2,,3,3

3,3,3,3

方法如下:

publicList<List<string>>GetDataFromCSV(stringpath){List<List<string>>data=newList<List<string>>();using(StreamReadersr=newStreamReader(@path,Encoding.GetEncoding("GB2312"))){stringnextline;while((nextline=sr.ReadLine())!=null){List<string>row=newList<string>();char[]charArray=nextline.ToCharArray();intflag=0;for(inti=0;i<charArray.Length;i++){if(charArray[i]!=','&&i!=(charArray.Length-1)){continue;}else{if(flag==i){row.Add("-1");//若空值赋值-1,此处赋值可自行定义flag=i+1;if(i==charArray.Length-1)//若最后一个为逗号,需在加一个空值,即添加-1代表空{row.Add("-1");}}else{strings;if(i==charArray.Length-1)//最后一个数时提取字符串length=i-flag+1{s=nextline.Substring(flag,i-flag+1);}else{s=nextline.Substring(flag,i-flag);}flag=i+1;row.Add(s);}}}data.Add(row);}//消除最后的空行for(inti=data.Count-1;i>=0;i--){if(data[i].Count==0){data.Remove(data[i]);}else{break;}}}returndata;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。