在Java中将分隔符视为不同的标记

Cod*_*mon 1 java

我很难找到如何从文件中读取并输出分隔符,如";" 或":"等作为单独的字符串

这是我到目前为止所做的:

int i = 0;

s = new Scanner(new BufferedReader(new FileReader("lab1.txt")));


while (s.hasNext()) {
    System.out.println(s.next());
    i++;
Run Code Online (Sandbox Code Playgroud)

输入文件lab1.txt是:

cookies; and juice
Run Code Online (Sandbox Code Playgroud)

输出:

cookies;
and
juice
Run Code Online (Sandbox Code Playgroud)

我希望输出是什么:

cookies
;
and
juice
Run Code Online (Sandbox Code Playgroud)

知道我怎么能得到它?

谢谢.

Men*_*ena 7

你需要使用分隔符Scanner.

它将使用正则表达式来定义分隔符 - 请参阅此处的 API .

例如(这里替换为a StringReader来重现):

Scanner s = new Scanner(new BufferedReader(new StringReader("cookies; and juice")));
//              | whitespace
//              |  | or 
//              |  | | something followed by punctuation (non-capturing group)
//              |  | | 
s.useDelimiter("\\s|(?=\\p{Punct})");
while (s.hasNext()) {
    System.out.println(s.next());
}
Run Code Online (Sandbox Code Playgroud)

产量

cookies
;
and
juice
Run Code Online (Sandbox Code Playgroud)