我正在尝试使用useDelimiters()按某个分隔符而不是每个新行分割文本文件。例如,在下面的代码中,我有这个文本文件输入,我想在句号中分成两个:
hellothere
stop.hereok
asdf
我的代码:
public static void main(String[] args) throws FileNotFoundException {
File text = new File("test.txt");
Scanner filein = new Scanner(text).useDelimiter("\\.");
System.out.println(filein.next());
System.out.println(filein.next());
}
我的输出:
hellothere
stop
hereok
asdf
预期产出:
hellotherestop
hereokasdf
有人知道这个问题吗?
答案 0 :(得分:1)
如果您的文件包含文字
hellothere
stop.hereok
asdf
这意味着它包含代表行分隔符的字符(\n
\r
或\r\n
,具体取决于操作系统)。打印文本直到点分隔符也会打印这些行分隔符,这意味着第一个
System.out.println(filein.next());
将打印
hellothere //<-here exists line separator character(s)
stop //and here was dot, or end of your text
如果您希望在没有行分隔符的情况下打印hellotherestop
,则需要手动删除它们。
从Java 8开始,您可以使用\R
字符类添加到regex引擎,该引擎代表\r\n
\r
之类的分隔符以及其他几个。
System.out.println(filein.next().replaceAll("\\R",""));
如果您使用的是旧版Java,可以尝试使用replaceAll("\r?\n|\r","")