我的问题是如何在不跳到下一行的情况下使用分隔符
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
我希望我的输出像一个包含更多列的表格,如文本文件中那样。
答案 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(";")
构建输出。