如何用java扫描器识别回车(How to recognize carriage return us

2019-11-02 11:49发布

我想读一个CSV文件到我的应用程序读取一组数据到一个表。 每一行由逗号分隔和行的每一端都有一个回车。 我尝试使用扫描仪在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);
                    }

这个想法似乎很简单,但我到处寻找了,所有不工作无用的例子。

Answer 1:

如果你只是想填充该文件的第一行columnTitles载体,然后处理文件的其余部分(或没有)

  1. 使用一个BufferedReader你的文件中读取第一行成一个字符串
  2. 创建使用字符串扫描仪
  3. 填充使用扫描器从步骤2中的矢量
  4. 然后,如果你要处理的文件的其余部分,你在上面做什么,但你的while循环之前调用scn.nextLine()跳过文件的第一行


Answer 2:

你可以使用两台扫描仪:

new Scanner(scanner.nextLine());

或一个BufferedReader和扫描仪

new Scanner(bufferedReader.readLine());

或的BufferedReader和分裂。

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

你的情况,我认为你从扫描仪获得的唯一一件事就是调用nextInt()而不是字符串转换为一个int自己(这是很容易做到)的能力。



Answer 3:

回车是以Unicode / ASCII控制字符,并且可以通过其十六进制值,就像任何其他的“看得见”的字符来识别。 新生产线的0x0A(10),并回车(他们是略有不同的东西)是0X0D(13)。



文章来源: How to recognize carriage return using java scanner