在文本文件上使用分隔符

时间:2017-03-29 12:47:54

标签: java java.util.scanner

我的问题是如何在不跳到下一行的情况下使用分隔符

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ReadTextFile
{
    public static void main(String[] args) throws FileNotFoundException
    {
        Scanner read = new Scanner(new File("read.txt"));
        read.useDelimiter(";");

        while (read.hasNext()) {
            System.out.println(read.next());
        }
    }
}

我的文字档案:

1;1;1;1
1;1;1;1
1;1;1;1
1;1;1;1
1;hallo;1;1
1;1;1;1
1;wie;1;1
1;1;1;1
1;1;1;1
1;1;1;1
1;gehts;1;1
1;1;1;1
1;1;1;1
1;1;1;1
1;1;1;1

我的输出:

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

我希望我的输出像一个包含更多列的表格,如文本文件中那样。

2 个答案:

答案 0 :(得分:0)

删除read.useDelimiter(";");并改为使用read.next().split(";");

使用replace我的解决方案可能更简单,但您要求输出在列中,所以我认为这就是您的意思。

Scanner read = new Scanner(new File("read.txt"));

  while(read.hasNext()){

    String[] line = read.next().split(";");
    for(String s : line){
        System.out.print(s + "\t");
    }
        System.out.println();
  }

输出:

1   1   1   1   
1   EDC 1   1   
1   1   1   1   
1   AVC 1   1   
1   1   1   1   
1   1   1   1

如果您注意格式化输出,那么您可能需要使用:

Scanner read = new Scanner(new File("read.txt"));
while(read.hasNext()){
  System.out.println(read.next().replace(";", ""));
}

输出:

1111
1EDC11
1111
1AVC11
1111
1111

答案 1 :(得分:0)

您需要将分隔符更改为\n。使用;表示每个条目都是;之间的数字。

试试这个

public class Readtextfile {


    public static void main(String[] args) throws FileNotFoundException {

            Scanner read = new Scanner(new File("read.txt"));
            read.useDelimiter("\n"); // It is the default delimiter, you can skip this line.

            while(read.hasNext()){
                 String str= read.next().replaceAll(";","");
                 System.out.println(str));

            }

        }

    }

否则尝试逐行阅读,然后使用split(";")构建输出。