对包含逗号、引号的CSV字符串的解析函数
来源:互联网 发布:快速检索算法 编辑:程序博客网 时间:2024/06/13 23:42
csv文件一般格式为:
A,B,C
1,2,3
4,5,6
但是当文件内存储有逗号、引号,如果只是用split(",")会导致在存在逗号的情况下出错。
如:
A,B,C
1,“2,2",3
4,"""5",6
以下函数输入:
string ll = @"4,""""""5"",6,""2,3""";//从excel中查看的数据显示 4|"5|6|2,3,保存的字符串为4,"""5",6,"2,3"
string[] a = CSVstrToAry(ll);
输出:
a[0]:4
a[1]:”5
a[2]:6
a[3]:2,3
函数如下:
private static string[] CSVstrToAry(string strLine) { string strItem = string.Empty; int semicolonFlg = 0;//单数时肯定不是某一列的结束位置 List<string> lstStr = new List<string>(); string strA = string.Empty; for (int i = 0; i < strLine.Length; i++) { strA = strLine.Substring(i, 1); if (strA == "\"") semicolonFlg += 1; if (semicolonFlg == 2) semicolonFlg = 0; if (strA == "," && semicolonFlg == 0) { if (strItem.Contains("\"")) { strItem = strItem.Replace("\"\"", @"""");//CSV中引号也会有转义,单引号会转换为双引号 if (strItem.StartsWith("\"") && strItem.EndsWith("\"")) { strItem = strItem.Substring(1, strItem.Length - 2); } } lstStr.Add(strItem); strItem = string.Empty; } else { strItem += strA; } } if (strItem.Length > 0) { if (strItem.Contains("\"")) { strItem = strItem.Replace("\"\"", @"""");//CSV中引号也会有转义,单引号会转换为双引号 if (strItem.StartsWith("\"") && strItem.EndsWith("\"")) { strItem = strItem.Substring(1, strItem.Length - 2); } } lstStr.Add(strItem); } return lstStr.ToArray(); }
阅读全文
0 0
- 对包含逗号、引号的CSV字符串的解析函数
- 获取csv文件对逗号和引号的处理
- C#获取CSV文件内容对逗号和引号分隔的处理
- C#获取CSV文件内容对逗号和引号分隔的处理
- 导入CSV包含逗号的内容
- js如何只对引号外的逗号进行分割
- C#以逗号拆分字符串,若字段中包含逗号(备注:包含逗号的字段必须有双引号引用)则对其进行拼接处理
- C#以逗号拆分字符串,若字段中包含逗号(备注:包含逗号的字段必须有双引号引用)则对其进行拼接处理
- 正确解析以逗号分割的CSV文件
- 正确解析以逗号分割的CSV文件
- Ubuntu 解析以逗号“,”分割数据的csv文件
- PHP 解析缺少引号的json字符串
- json串中包含英文逗号,引号,大于号,小于号的解决方法
- Mysql 存储过程之函数-如判断两个以逗号分隔字符串的包含关系
- 逗号分隔的值--CSV
- python 怎么写一个包含单双三引号的字符串
- python 以逗号分割,忽略引号内的逗号
- Oracle自定义函数,判断一个以逗号拼接的字符串是否完全包含另外一个字符串,与拼接顺序无关
- 【Codeforces 812 C. Sagheer and Nubian Market】+ 二分
- MSSQL:DAO连接数据库
- (一)OpenCV中的GUI特性
- Spark 大数据计算
- 通过终端安装程序sudo apt-get install xxx时出错(上次安装没有正常完成)
- 对包含逗号、引号的CSV字符串的解析函数
- sql
- 数据结构--单链表及静态链表
- report studio直接写sql做报表
- LVS负载均衡
- 期末实践学生学籍管理系统
- [编程之美-10]面试当中的智力题(不定期更新)
- Linux下多线程编程——C++版本
- 依赖注入框架解析