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

文本中内容格式

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#正则表达式提取文本中以逗号间隔的数据相关推荐

  1. Python使用正则表达式提取文本中ABAC和AABB形式的成语

    问题描述:编写程序,使用正则表达式从一段文本中提取所有ABAC和AABB形式的四字成语,例如我行我素.无忧无虑.一生一世.高高兴兴. 技术要点:正则表达式中子模式编号.在正则表达式中,使用圆括号表示子 ...

  2. python从文件中提取特定文本_python利用正则表达式提取文本中特定内容

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python ...

  3. python正则表达式提取文本中的电话号码和邮箱

    代码: #! python3 import pyperclip,rephoneregex = re.compile(r''' (\d{3}|\(\d{3}\))? # area code (\s|-| ...

  4. python正则表达式提取电话号码_python正则表达式提取文本中的电话号码和邮箱

    代码: #! python3importpyperclip,re phoneregex =re.compile(r'''(\d{3}|\(\d{3}\))? # area code(\s|-|\.)? ...

  5. 使用正则表达式提取文件中满足条件的内容

    最近遇到需要处理一个很大文件的情况,需求是提取满足以`(ASCII 十进制 96)开头'结束的字符串,例如xxxxx`abcdedg'. 尝试在shell脚本中用正则表达式提取.有点曲折,后来通过py ...

  6. 01. 利用正则表达式提取文章中的所有英文单词

    利用正则表达式提取文章中的所有英文单词 1.先创建一个Pattern对象, 模式对象,可以理解成一个正则表达式对象 Pattern pattern = Pattern.compile("[a ...

  7. Excel VBA: 提取文本中的数字

    在处理Excel表格时,经常会碰到文字中掺杂数字而且需要对这些数字进行处理的情况.写一个简单的VBA函数,即可轻松提取文本中的数字. 先看效果: 再上代码: Function GetNum&( ...

  8. java 正则表达式 提取ip_java正则表达式提取地址中的ip和端口号

    由于我需要用到java正则表达式提取地址中的ip和端口号,所以我就写了一个demo,测试一下,下面是demo public class Test0810_1 { public static void ...

  9. 利用正则表达式提取网页中Table内的数据

    利用正则表达式提取网页中Table内的数据 using System; using System.Collections.Generic; using System.Linq; using Syste ...

最新文章

  1. C++ 互斥锁和条件变量实现读写锁
  2. C++ 11 创建和使用 shared_ptr
  3. nmon工具的安装记录
  4. day10_控制文件
  5. [react] 使用React的memo和forwardRef包装的组件为什么提示children类型不对?
  6. 陈奕迅为什么也哭穷?
  7. Pandas DataFrame GroupBy.Apply
  8. 【转】DataTable与实体类互相转换
  9. Python 定时任务(apscheduler模块)
  10. Oracle 联合主键
  11. 西门子逻辑运算指令_西门子plc位逻辑运算指令
  12. 韩立刚《计算机网络》| 第5章 传输层
  13. 2022年了,微信透明头像怎么设置?不多说,安排(2)
  14. 20210324 PS 2019版无法实现不等比例缩放
  15. 美国合同法笔记-合同定义
  16. IntelliJ IDEA在Mac下格式化代码快捷键与失效原因
  17. java和C语言在数据类型和语法上的比较
  18. 128、易燃气体的概念
  19. 【新手入门必看】MaixPy 图像基础知识
  20. 老子是一个怎样的传奇!(转发)

热门文章

  1. JavaScript基础一
  2. centos7+ docker1.12 实践部署docker及配置direct_lvm
  3. CodeFirst实战:用文本数据库存档软件配置
  4. Java常量池解析与字符串intern简介
  5. 如何提高软件可维护性
  6. Good Bye G.cn
  7. 【转载】Python对接六大主流数据库,只需三步
  8. ApacheTomcat解析请求参数的过程
  9. 异步编程 In .NET(转载)
  10. [AngularJS学习笔记] 基础学习01