如何使用java扫描仪识别回车

时间:2013-09-17 20:23:05

标签: java java.util.scanner carriage-return

我正在尝试将CS​​V文件读入我的应用程序,以将大量数据读入表中。 每行用逗号分隔,行的每一端都有一个回车符。我尝试使用java中的扫描程序读取分隔符设置为(“,”)的第一行,但我无法弄清楚如何在第一行到达回车符时停止扫描程序。这是我到目前为止的代码,它扫描文件中的所有内容,因为它不会在回车时停止。

Scanner scn = new Scanner(inputStream);

                    Vector<String> columnTitles = new Vector<String>();
                    scn.useDelimiter(",");

                    // Read the first line to get the column names.
                    while(!scn.hasNextInt())
                    {
                        String newStr = scn.next();
                        columnTitles.add(newStr);
                        System.out.print(newStr);
                    }

这个想法看起来很简单,但我看到的每个地方都有无用的例子,都是行不通的。

3 个答案:

答案 0 :(得分:3)

您可以使用两台扫描仪:

new Scanner(scanner.nextLine());

或BufferedReader和扫描仪

new Scanner(bufferedReader.readLine());

或BufferedReader并拆分。

bufferedReader.readLine().split(",");

在你的情况下,我认为你从扫描仪获得的唯一的东西是能够调用nextInt()而不是自己将String转换为int(这很容易做到)。

答案 1 :(得分:3)

如果您只是尝试使用文件的第一行填充columnTitles向量,然后处理文件的其余部分(或不处理)

  1. 在文件上使用BufferedReader将第一行读入字符串
  2. 使用该字符串创建扫描程序
  3. 使用步骤2中的扫描仪填充矢量
  4. 然后,如果你想处理文件的其余部分,做你上面做的事情但是在你的while循环之前调用scn.nextLine()来跳过文件的第一行

答案 2 :(得分:0)

回车符是Unicode / ASCII中的控制字符,可以通过其十六进制值来标识,就像任何其他“可见”字符一样。新行是0x0A(10),回车(它们略有不同)是0x0D(13)。