Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 要从CSV文件中检索数据,请将其拆分,并将一列的数据存储在字符串数组中,不重复_Java_Csv - Fatal编程技术网

Java 要从CSV文件中检索数据,请将其拆分,并将一列的数据存储在字符串数组中,不重复

Java 要从CSV文件中检索数据,请将其拆分,并将一列的数据存储在字符串数组中,不重复,java,csv,Java,Csv,条件1:csv文件类似于 abi^siri^ram^ravi abc^^cde^ram,siri^ravi 在某些行中,标记类似于^(它不是空的,并且中间没有空格) 我必须将第三个冒号检索到一个字符串数组中,但我无法理解如何处理^案例 条件2:如第二行所示,一个元组即(ram、siri)应再次拆分,并应存储在同一数组中 条件3:字符串数组不应包含重复项 我的节目: import java.io.*; import java.util.*; class Parser{ public stati

条件1:csv文件类似于

abi^siri^ram^ravi
abc^^cde^ram,siri^ravi
在某些行中,标记类似于
^
(它不是空的,并且中间没有空格) 我必须将第三个冒号检索到一个字符串数组中,但我无法理解如何处理
^
案例

条件2:如第二行所示,一个元组即(ram、siri)应再次拆分,并应存储在同一数组中

条件3:字符串数组不应包含重复项

我的节目:

import java.io.*;
import java.util.*;

class Parser{
public static void main(String[] args) throws IOException
{
    FileInputStream fs = new FileInputStream("D:\\myfile.csv");
    DataInputStream in = new DataInputStream(fs);
    BufferedReader br = new BufferedReader(new InputStreamReader(in));
    String line = null;

    while((line=br.readLine())!=null)
    {
        String[] values = line.split("\\^");
        String reqcol = values[values.length - 1];
        System.out.println(reqcol);
    }
  }
}
我能够检索列,但无法处理
^
案例字符串。split()不适合您的情况。别管了

从字符串中的某个位置开始搜索下一个分隔符并不难;重复这样做(使用String.indexOf(delimiter,start))来查找每个字段并加载您自己的列表(我将使用ArrayList,如果必须使用数组,则在末尾转换为array)


有一点模糊,以确保你有正确的开始和结束位置,但这是编程的一部分。它将允许您检测^^^案例,并根据您的喜好输入空字符串或空字符串。很抱歉,暴力将比人工处理无法处理您的案例更容易。99%的案例不需要为CSV文件这样的一般任务滚动您自己的东西。大多数库都会开箱即用地处理大多数基本问题,如空值或包含分隔符的值。你可以从和开始。我在我的项目中使用了SuperCSV,它表现良好,而且非常容易学习


当您读取CSV行(因此库API处理所有解析麻烦)时,您可能会获得列#3的值,使用String.split()解析它,并将其放入集合集合以确保元素是唯一的。

为什么不将所有的“^^”替换为“^”?像
line=line.replace(/^^/g,“^”)如果他用^替换^^,他将丢失信息^^告诉他有一个没有值的列,如果他只是用^替换它,他将完全丢失该列。