C#正则表达式提取文本中以逗号间隔的数据
使用正则表达式提取文本数据到内存是很方便的技术,下面通过一个例子介绍一下如何使用正则表达式提取文本
文本中内容格式
1,2,3,4,5
2,2,2,2,2
3,3,3,3,3
C#代码如下
public List<List<string>> GetDataCSV(string path) {string pattern = @"\d+";List<List<string>> data = new List<List<string>>();using(StreamReader sr = new StreamReader(@path, Encoding.GetEncoding("GB2312"))){string nextline;MatchCollection myMatches;while((nextline = sr.ReadLine()) != null ){myMatches = Regex.Matches(nextline, pattern);List<string> rowdata = new List<string>(); ;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<List<string>> GetDataFromCSV(string path) {List<List<string>> data = new List<List<string>>();using(StreamReader sr = new StreamReader(@path, Encoding.GetEncoding("GB2312"))){string nextline;while((nextline = sr.ReadLine()) != null ){List<string> row = new List<string>();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; }
转载于:https://blog.51cto.com/11697581/1825633
C#正则表达式提取文本中以逗号间隔的数据相关推荐
- Python使用正则表达式提取文本中ABAC和AABB形式的成语
问题描述:编写程序,使用正则表达式从一段文本中提取所有ABAC和AABB形式的四字成语,例如我行我素.无忧无虑.一生一世.高高兴兴. 技术要点:正则表达式中子模式编号.在正则表达式中,使用圆括号表示子 ...
- python从文件中提取特定文本_python利用正则表达式提取文本中特定内容
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python ...
- python正则表达式提取文本中的电话号码和邮箱
代码: #! python3 import pyperclip,rephoneregex = re.compile(r''' (\d{3}|\(\d{3}\))? # area code (\s|-| ...
- python正则表达式提取电话号码_python正则表达式提取文本中的电话号码和邮箱
代码: #! python3importpyperclip,re phoneregex =re.compile(r'''(\d{3}|\(\d{3}\))? # area code(\s|-|\.)? ...
- 使用正则表达式提取文件中满足条件的内容
最近遇到需要处理一个很大文件的情况,需求是提取满足以`(ASCII 十进制 96)开头'结束的字符串,例如xxxxx`abcdedg'. 尝试在shell脚本中用正则表达式提取.有点曲折,后来通过py ...
- 01. 利用正则表达式提取文章中的所有英文单词
利用正则表达式提取文章中的所有英文单词 1.先创建一个Pattern对象, 模式对象,可以理解成一个正则表达式对象 Pattern pattern = Pattern.compile("[a ...
- Excel VBA: 提取文本中的数字
在处理Excel表格时,经常会碰到文字中掺杂数字而且需要对这些数字进行处理的情况.写一个简单的VBA函数,即可轻松提取文本中的数字. 先看效果: 再上代码: Function GetNum&( ...
- java 正则表达式 提取ip_java正则表达式提取地址中的ip和端口号
由于我需要用到java正则表达式提取地址中的ip和端口号,所以我就写了一个demo,测试一下,下面是demo public class Test0810_1 { public static void ...
- 利用正则表达式提取网页中Table内的数据
利用正则表达式提取网页中Table内的数据 using System; using System.Collections.Generic; using System.Linq; using Syste ...
最新文章
- C++ 互斥锁和条件变量实现读写锁
- C++ 11 创建和使用 shared_ptr
- nmon工具的安装记录
- day10_控制文件
- [react] 使用React的memo和forwardRef包装的组件为什么提示children类型不对?
- 陈奕迅为什么也哭穷?
- Pandas DataFrame GroupBy.Apply
- 【转】DataTable与实体类互相转换
- Python 定时任务(apscheduler模块)
- Oracle 联合主键
- 西门子逻辑运算指令_西门子plc位逻辑运算指令
- 韩立刚《计算机网络》| 第5章 传输层
- 2022年了,微信透明头像怎么设置?不多说,安排(2)
- 20210324 PS 2019版无法实现不等比例缩放
- 美国合同法笔记-合同定义
- IntelliJ IDEA在Mac下格式化代码快捷键与失效原因
- java和C语言在数据类型和语法上的比较
- 128、易燃气体的概念
- 【新手入门必看】MaixPy 图像基础知识
- 老子是一个怎样的传奇!(转发)