`
ihuashao
  • 浏览: 4856633 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

解析csv格式的java函数

阅读更多

我们经常将Excel格式的文件保存为csv格式以方便上传和修改,可是当数据中包含逗号和双引号的时候Excel会把该字段用双引号括住并把数据中的"改为"",从而给解析带来了困难。我写了以下函数来解析这样的字符串:

testSplitCSV.java:

import java.util.Vector;
class testSplitCSV{
/**
*Split one line of csv file
*@returna String array results
*/
public static String[] splitCSV(String src)throws Exception{
if (src==null || src.equals("")) returnnewString[0];
StringBuffer st=new StringBuffer();
Vector result=new Vector();
booleanbeginWithQuote = false;
for(int i=0;i<src.length();i++){
char ch= src.charAt(i);
if (ch=='\"'){
if (beginWithQuote){
i++;
if (i>=src.length()){
result.addElement(st.toString());
st=new StringBuffer();
beginWithQuote=false;
}else{
ch=src.charAt(i);
if (ch == '\"'){
st.append(ch);
}else if (ch ==','){
result.addElement(st.toString());
st=new StringBuffer();
beginWithQuote =false;
}else{
throw new Exception("Singledouble-quote char mustn't existin filed "+(result.size()+1)+" while itis begined withquote\ncharat:"+i);
}
}
}else if (st.length()==0){
beginWithQuote =true;
}else{
throw new Exception("Quote cannot exist in a filed which doesn't begin with quote!\nfield:"+(result.size()+1));
}
}else if (ch==','){
if (beginWithQuote){
st.append(ch);
}else{
result.addElement(st.toString());
st=new StringBuffer();
beginWithQuote =false;
}
}else{
st.append(ch);
}
}
if (st.length()!=0){
if (beginWithQuote){
throw new Exception("last field is begin with but not end with double quote");
}else{
result.addElement(st.toString());
}
}
Stringrs[] = new String[result.size()];
for (int i=0;i<rs.length;i++){
rs[i]=(String)result.elementAt(i);
}
returnrs;
}

public static void main(String[] args){
String src1= "\"fh,zg\",sdf,\"asfs,\",\",dsdf\",\"aadf\"\"\",\"\"\"hdfg\",\"fgh\"\"dgnh\",hgfg'dfh,\"asdfa\"\"\"\"\",\"\"\"\"\"fgjhg\",\"gfhg\"\"\"\"hb\"";
try {
String[] Ret = splitCSV(src1);
for (int i=0;i<Ret.length;i++){
System.out.println(i+": "+Ret[i]);
}
}
catch(Exception e) {
e.printStackTrace();
}
}
}

分享到:
评论

相关推荐

    csv解析 javacsv2.1解析csv文件的方法

    3. **处理分隔符和转义字符:** `javacsv`默认使用逗号作为字段分隔符,但你可以通过构造函数的额外参数自定义分隔符。同样,它也支持转义字符,默认是双引号,用于包含包含分隔符的字段。 4. **跳过表头:** 如果...

    java csv共用javacsv.jar.zip

    CSV(Comma Separated Values)是一种常见的数据存储格式,它以逗号分隔每一项数据,使得文本文件能够被各种程序读取。在Java中处理CSV文件时,`javacsv`库是一个实用的工具,它提供了一系列方便的API来简化CSV文件...

    java读取csv文件示例分享(java解析csv文件)

    以下是一个简单的Java程序示例,演示如何读取并解析CSV文件。 首先,我们需要了解CSV文件的基本结构。CSV文件是由行和列组成的数据文件,每一行代表一个记录,列之间用逗号分隔。在这个例子中,我们有一个包含三列...

    CSV文件格式解析器

    CSV(Comma Separated Values)文件格式是一种广泛用于数据交换的简单文本格式。它以逗号作为字段分隔符,每一行代表一个记录,而每个记录由一个或多个字段组成。CSV文件通常用于导入和导出数据库、电子表格程序,如...

    将xml文件转换成csv格式

    4. **遍历XML树**:遍历解析后的XML树,收集数据并组织成CSV格式。递归函数或迭代器可以用于处理嵌套的XML结构。 5. **创建CSV文件**:使用合适的库,如Python的`csv`模块,创建一个新的CSV文件,并逐行写入数据。...

    java使用javacsv读取csv文件 导入Mysql数据库

    最后,将读取CSV文件和插入数据的过程结合起来,遍历CSV文件中的所有行,对每一行调用`importCSVToDatabase()`函数: ```java public static void main(String[] args) { // ... while ((record = reader.read...

    怎样打开.csv格式的文件

    这意味着,即使没有Excel,只要数据是按照逗号分隔的,任何能够解析这种格式的应用都可以处理这些文件。这使得.csv文件成为跨平台和跨软件的数据交换标准。 在提供的压缩包文件列表中,有一个名为 `Setup.exe` 的...

    csv-parser:简单的 CSV 格式解析器

    总的来说,`csv-parser`提供了一个轻量级且高效的解决方案,用于处理和解析CSV数据,尤其适用于Java开发者。它的有限状态机实现确保了解析过程的稳定性和准确性,而附带的可视化工具则增加了对数据探索的价值。对于...

    CSV XLS Converter In Java (JXL Java Excel API)

    2. **读取CSV文件**:Java的`BufferedReader`或第三方库如Apache Commons CSV可以用来读取CSV文件,将每行数据解析为字符串数组。 3. **创建Excel工作簿**:使用JXL的`WorkbookSettings`和`Workbook.createWorkbook...

    机器学习100天 导入需要的库 numpy 和 pandas numpy-包含数学计算函数 pandas-用于导入和管理数据集 导入数据集 数据集采用.csv格式 csv以文本形式保存表格数据

    导入数据集 数据集采用.csv格式。csv以文本形式保存表格数据,即文件每一行是一条数据记录。可以采用pandas的read_csv读取本地的csv为一个数据帧,通过数据帧制作自变量和因变量的矩阵和向量。。处理丢失数据 我们...

    matlab开发-csvreader

    `csvreader`是为MATLAB设计的一个强大的CSV解析函数,它能有效地帮助用户读取和处理CSV文件中的数据。在这个名为"matlab开发-csvreader"的压缩包中,包含了一些关键组件和文档,旨在简化CSV文件的读取操作。 首先,...

    csv分析与读取

    - Java:Apache Commons CSV库或Java 8及更高版本的`java.util.Scanner`。 - JavaScript:Node.js环境下的`csv-parser`库。 - R:`read.csv`函数。 - Excel:可以直接打开CSV文件,也可以通过`Text to Columns`功能...

    FTP文件上传下载CSV文件生成ZIP压缩

    这些库可以方便地将CSV数据解析为Java对象,或者将对象序列化为CSV格式。 Test.java通常用于编写测试代码,以验证FTPUtils和CSVUtils的功能是否正常。可以使用JUnit或其他测试框架,编写单元测试或集成测试,确保...

    JAVA串口助手接收数据并解析数据存入MySQL数据库中

    例如,如果数据是以逗号分隔值(CSV)格式,可以使用`String.split()`方法来拆分。 4. **MySQL数据库操作** 在Java中,我们可以使用JDBC(Java Database Connectivity)API与MySQL进行交互。首先,需要在项目中引入...

    commons-csv-1.8-bin.zip

    这个"commons-csv-1.8-bin.zip"文件包含了Apache Commons CSV库的1.8版本,它是一个二进制分发包,适用于Java开发者在他们的应用中解析和生成CSV数据。 CSV文件格式虽然简单,但处理起来却有许多复杂性,例如字段...

    java操作csv文件

    在日常开发工作中,经常需要处理各种格式的数据文件,其中CSV(逗号分隔值)文件是一种常见的数据存储格式。它以纯文本形式存储表格数据,每行表示一个数据记录,每个记录由若干个字段组成,字段之间用逗号等符号...

    IP 数据库,CSV 和 MDB 格式。

    这些源代码可能包含了读取、解析CSV文件,以及查询和检索IP信息的功能。 标签“工具”则意味着这个IP数据库可能不仅仅是一个数据集,还可能包括了一些实用工具,例如命令行工具或者GUI应用,用于快速查询IP地址信息...

    CSV文件操作

    2. **解析CSV数据**:解析CSV数据涉及识别字段分隔符、处理包含逗号的文本字段(通常用双引号包围)、以及处理行尾和列尾的空白字符。在解析过程中,需要注意正确处理转义字符,确保数据的完整性和准确性。 3. **...

    读取与合并CSV文件

    在IT行业中,CSV(Comma Separated Values)文件是一种广泛使用的数据存储格式,因其简单、通用和易于处理的特性而受到青睐。C#作为一种强大的编程语言,提供了多种方法来读取、操作和合并CSV文件。下面我们将深入...

    fileReader_csv_文件读取_

    读取CSV文件通常涉及解析文件内容并将其转换为结构化数据,例如数组或对象。在Python中,我们可以使用内置的`csv`模块来完成这个任务。以下是一个简单的示例: ```python import csv with open('example.csv', 'r'...

Global site tag (gtag.js) - Google Analytics