使用正则表达式提取文本数据到内存是很方便的技术,下面通过一个例子介绍一下如何使用正则表达式提取文本
成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、成都网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的庄河网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!文本中内容格式
1,2,3,4,5
2,2,2,2,2
3,3,3,3,3
C#代码如下
public List> GetDataCSV(string path) { string pattern = @"\d+"; List
> data = new List
>(); using(StreamReader sr = new StreamReader(@path, Encoding.GetEncoding("GB2312"))) { string nextline; MatchCollection myMatches; while((nextline = sr.ReadLine()) != null ) { myMatches = Regex.Matches(nextline, pattern); List
rowdata = new List (); ; foreach(Match nextmatch in myMatches) { rowdata.Add(nextmatch.Value); } data.Add(rowdata); } //消除最后的空行 for(int i=data.Count-1;i>=0;i--) { if(data[i].Count ==0) { data.Remove(data[i]); } else { break; } } } return data; }
上面代码试用标准格式,逗号间都有数据,此外逗号间无数据如
1,2,3,4
2,,3,3
3,3,3,3
方法如下:
public List> GetDataFromCSV(string path) { List
> data = new List
>(); using(StreamReader sr = new StreamReader(@path, Encoding.GetEncoding("GB2312"))) { string nextline; while((nextline = sr.ReadLine()) != null ) { List
row = new List (); char[] charArray = nextline.ToCharArray(); int flag = 0; for (int i = 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 { string s; 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(int i=data.Count-1;i>=0;i--) { if(data[i].Count ==0) { data.Remove(data[i]); } else { break; } } } return data; }
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。