Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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,对于课堂作业,我使用的数据给我带来了一个小问题: 它是一个CSV,但是,cast变量也被逗号分隔,影响了我使用的.split函数。数据有一组[值,值,值,”值,值,“,值,…]。目标是排除“”中的值 当前要运行此功能,我有: while ( inFile.hasNext() ){ String delims = "[,]"; //Delimiters for seperation

对于课堂作业,我使用的数据给我带来了一个小问题: 它是一个CSV,但是,cast变量也被逗号分隔,影响了我使用的.split函数。数据有一组[值,值,值,值,值,,值,…]。目标是排除“”中的值

当前要运行此功能,我有:

while ( inFile.hasNext() ){
               String delims = "[,]";                               //Delimiters for seperation
               String[] tokens =  inFile.nextLine().split(delims);  // seperation operator put in to string array
                for (String token : tokens) {
                    System.out.println(token);
                }

因为这是一个类赋值,所以我只需编写逻辑代码。 对于每个字符,决定是要将其添加到当前单词中,还是必须开始一个新词。因此,如果您处于“”状态并对此作出反应,则存储起来非常容易

像这样的

public List<String> split(String line)
  {
    List<String> result = new ArrayList<>();
    String currentWord = "";
    boolean inWord = false;
    for (int i = 0; i < line.length(); i++)
    {
      char c = line.charAt(i);
      if (c == ',' && !inWord)
      {
        result.add(currentWord.trim());
        currentWord = "";
        continue;
      }
      if (c == '"')
      {
        inWord = !inWord;
        continue;
      }
      currentWord += c;
    }
    return result;
  }
公共列表拆分(字符串行)
{
列表结果=新建ArrayList();
字符串currentWord=“”;
布尔inWord=false;
对于(int i=0;i
下面是一些核心正则表达式:
但我不会在作业中使用它们。

我相信有一种更简单的方法可以做到这一点,但这是我提出的一种解决方案

    while ( inFile.hasNext() ) {
        int quote = 0;
        String delims = "[,]"; //Delimiters for seperation
        String[] tokens =  inFile.nextLine().split(delims);
         for (String token : tokens) {
             if(token.contains("\"")) { //If contains a quote
                 quote++; //Increment quote counter
             }
             if (quote != 1) //If not between quotes
             {
                 if(token.indexOf(" ") == -1) //Print if no space at beginning
                 {
                    System.out.println(token);
                 }
                 else { //Print from first character
                    System.out.println(token.substring(token.indexOf(" ") + 1));
                 }  
             }
         }
    }

    inFile.close();

您好,请编辑问题并显示有问题的csv数据的示例。您提供的链接需要登录才能下载文件,这里没有人会这么做。集合[value,value,etc…]是数据集的一个示例,斜体部分是不应包含的部分,它们用“”为了便于阅读,我还将其加粗。这也取决于您使用的数据。如果每个“值”都有一个换行符,这就行不通了。只有当数据在我从描述中假设的同一行上。你链接的页面本质上是同一个问题,没有发现它。。。(至于作业,我想找一些简洁的东西用在定界上。这在我们班是允许的)