在Java Scanner中拆分数据文件

时间:2013-01-08 11:43:26

标签: java design-patterns java.util.scanner delimiter

我有以下数据要分开。

(1,167,2,'LT2A',45,'Weekly','1,2,3,4,5,6,7,8,9,10,11,12,13'),

获取每个值:

  

1
  167个
  2
  'LT2A'
  45个
  “每周”
  '1,2,3,4,5,6,7,8,9,10,11,12,13'

我正在使用Scanner类来执行此操作,并使用作为分隔符。 但由于最后一个字符串,我遇到了问题:('1,2,3,4,5,6,7,8,9,10,11,12,13')

因此,我想就如何分割这些数据提出一些建议 我也尝试使用''作为分隔符,但字符串包含没有''的数据。

这个问题非常符合我的需求,但如果有人能就我如何分割这些数据给我建议,我将不胜感激。

谢谢!

3 个答案:

答案 0 :(得分:2)

你可以使用简单的逻辑,例如:

    String str="1,167,2,'LT2A',45,'Weekly','1,2,3,4,5,6,7,8,9,10,11,12,13'";
    Scanner s = new Scanner(str);
    s.useDelimiter(",");
    while(s.hasNext())
    {
        String element = s.next();
        if(element.startsWith("'") && ! element.endsWith("'"))
        {
            while(s.hasNext())
            {
                element += "," + s.next();
                if(element.endsWith("'"))
                    break;
            }
        }
        System.out.println(element);
    }

答案 1 :(得分:1)

您可以为案例做的最好的事情是首先使用“'”将其拆分,然后使用“"”分隔符将其拆分。喜欢以下代码:

String cc = "(1,167,2,'LT2A',45,'Weekly','1,2,3,4,5,6,7,8,9,10,11,12,13'),";

Scanner s = new Scanner(cc);
  try
  {
     while (s.hasNextLine())
     {
        String[] tokens = s.nextLine().split("'"); //split it using ' delimiter 
        for (int i = 0; i < tokens.length; i++)
        {
           String[] ss = tokens[i].split(","); // split it using " delimiter 
           // do the processing for tokens here
        }
     }
  }
  finally
  {
     s.close();
  }

答案 2 :(得分:1)

尝试

    String s = "1,167,2,'LT2A',45,'Weekly','1,2,3,4,5,6,7,8,9,10,11,12,13'";
    Scanner sc = new Scanner(s);
    sc.useDelimiter(",");
    while (sc.hasNext()) {
        String n = sc.next();
        if (n.startsWith("'") && !n.endsWith("'")) {
            n = n + sc.findInLine(".+?'");
        }
        System.out.println(n);
    }
}