csv 文件中,如果值中有分隔符,分隔符需要转义,否则会被解析掉.比如:你好\,世界,你是谁?,张三.你好,世界 需要作为一个整体解析.写了一个小方法,记录一下.
public static List<String> parseCSV(String s, char seprator) { char[] cs = s.toCharArray(); List<String> list = new ArrayList<String>(); StringBuilder sb = new StringBuilder(); int pi = -1; for(int i = 0; i < cs.length; i++) { char c = cs[i]; if (c == '\\') { sb.append(c); pi = i; continue; } if (c != seprator) { sb.append(c); continue; } if (pi + 1 == i) { // 是转义符 sb.deleteCharAt(sb.length() - 1); sb.append(c); pi = -1; } else { // 是分隔符 list.add(sb.toString()); sb.delete(0, sb.length()); } } list.add(sb.toString()); return list; }
string.split(",")是正则分割,并且不能检索"\".上面的方法是字符检索,经过测试,上面的方法比split要快一些 (3-4倍).
int i = 0; long start = System.currentTimeMillis(); do { parseCSV(content, ','); } while (i++ < 10000); long end = System.currentTimeMillis(); System.out.println("" + (end - start)); long start2 = System.currentTimeMillis(); i = 0; do { content.split(","); } while (i++ < 10000); long end2 = System.currentTimeMillis(); System.out.println("" + (end2 - start2));
另外一个小工具方法,http query string 解析:
public static Map<String, String> parseQueryString(String queryString) { Map<String, String> result = new HashMap<String, String>(); String[] eles = queryString.split(",|&"); for (String ele : eles) { String[] kv = ele.split(":|=", 2); result.put(kv[0], kv[1]); } return result; }
相关推荐
这是一个用c++写的csv文件解析程序,该程序可以读取三种分隔符格式的csv文件。程序简单,执行快速。
使用c++开发的csv文件解析类。 namespace cpp { namespace str { /** 高性能的 csv 解析 */ class csv_parser { public: typedef std::pair, size_t > string_t; typedef std::vector<string_t > fields_t; ...
csv解析 javacsv2.1解析csv文件的方法 需要jar包 javacsv.jar ,该jar包在附件里有,代码也在附件里。你可以把jar包放入工程里直接测试。
flex CSV解析 拓扑图绘制
一个基于 Microsoft 的简单 CSV 解析器一个基于 Microsoft 的简单 CSV 解析器一个基于 Microsoft 的简单 CSV 解析器一个基于 Microsoft 的简单 CSV 解析器一个基于 Microsoft 的简单 CSV 解析器一个基于 Microsoft ...
SwiftCSV 是 CSV 解析器封装。 用法: id,name,age 1,Alice,18 2,Bob,19 3,Charlie,20 访问行和列的数据: let csvURL = NSURL(string: "users.csv") let csv = CSV(contentsOfURL: url) // Rows...
neat-csv - 快速的CSV解析器。在其上面有回调接口
简单的Csv解析器一个简单的CSV分析器,用于将csv文件转换为对象列表并创建csv文件。产品特点分隔文件解析转换为可用的C#对象绑定到标题大文件处理安装包装经理 Install-Package SimpleCsvParser.Core.NET CLI ...
帮助解析CSV文件的jar包、帮助解析CSV文件的jar包、帮助解析CSV文件的jar包
一个简单的基于流或对象的csv解析和创建C ++库。 使用该库,您可以将CSV文件流式传输到对象中,或者将CSV行作为字符串添加到对象中,并获得具有已解析数据的双端队列对象。 数据可以从对象中流式传输,也可以从成员...
Rapidcsv:C ++ CSV解析器库
csv2go 用于将 CSV 文件解析为 JavaScript 对象的小型库。 用户可以传入一个描述 csv 列和预期对象之间关系的模式, csv2go将为输入的每一行创建一个符合模式的对象。 csv2go支持将 csv 列映射到对象属性将 csv 列...
Qt应用程序读取获取CSV文件,提取对应行的数据,转存为excel文件。基于SimpleXlsxWriter类和CSVparser类,代码在Scientific.pro中。
scala-csv-parser:CSV解析器库
C#解析csv,解决中文编码的一个代码例子
卫星电视简单的C ++ CSV解析器
超快速C#CSV解析器:实现流读取器和写入器。 非常快:比JoshClose的CSVHelper快2到4倍 内存有效:仅使用单个循环缓冲区,不为任何大小的CSV分配堆中的空间 轻量级:具有简单API的裸csv解析器 容忍不完全正确的CSV...
解析csv文件的代码,用c++语言编写
CSV解析器 跑 要运行所有测试: clean test 开始使用应用程序: run 实施了什么? 引号字符应是可配置的,默认为“ 行分隔符也应该是可配置的,默认为\ n 字段定界符也应该是可配置的,默认为, CSV可以包含一...
部分CSV解析器 是一个 C++ CSV 解析器。 此解析器旨在并行解析 CSV 文件。 使用生成的目录安装PartialCsvParser 是一个在公共领域分发的单头库。 只需将PartialCsvParser.hpp复制到包含路径中并包含它。 您还git add...