然后使用扫描仪'fileReader'扫描文件内容。
String importFile = "";
File Fileobject = new File(importFile);
Scanner fileReader = new Scanner(Fileobject);
while(fileReader.hasNext())
{
importFile = fileReader.next();
String [] splitText = importFile.split("[-\\s]");
System.out.println(splitText[0]);
}
但是,我遇到了一些麻烦,然后正确地分割文本文件中的数据......
文本文件中的每一行文本格式如下:
abcd - efgh - 12.34 - ijkl - mnop
文本应在拆分后按原样格式化:
abcd
efgh
12.34
ijkl
mnop
我希望文本在拆分后存储在数组'splitText'中,所以例如“abcd”将位于splitText [0]等内,尽管整个字符串被放入splitText [0 ]即使被拆分后 - 截图如下(here
答案 0 :(得分:1)
您的问题是多方面的:
通过使用Scanner.next()
,您一次读取一个空白分隔的字段文件,而您想逐行读取。请改为使用Scanner.nextLine()
代替。
首先观察@YCF_L,您使用的分隔符正则表达式不适合您的特定任务。您可以使用许多变体,但YCF_L很清楚,并且要点:"\\s*-\\s*"
。
分割输入后,只打印第一个结果字段。据推测,你这样做是为了抵消问题(1)。
把这些放在一起,一个完成你想要的工作的读取循环可能看起来更像这样:
while(fileReader.hasNext()) {
String line = fileReader.nextLine();
String[] splitText = line.split("\\s*-\\s*");
for (String field : splitText) {
System.out.println(field);
}
}
答案 1 :(得分:0)
而不是[-\s]
,您可以像\s*-\s*
这样分开:
String [] splitText = importFile.split("\\s*-\\s*");
String result = String.join("\n", splitText);//Join the results
System.out.println(result);
或者只打印您可以使用的结果(如果您使用的是Java 8,则可以使用):
Stream.of(importFile.split("\\s*-\\s*")).forEach(System.out::println);
输出
abcd
efgh
12.34
ijkl
mnop