Scanner.readLine() 与自定义行分隔符

问题描述 投票:0回答:1

我有一个字符串,需要使用 Scanner 类从开头到

\n
字符进行读取。问题是我的例子中的源流可能包含字符
\u2028
。我知道 Scanner 类使用模式
"\r\n|[\n\r\u2028\u2029\u0085]"
来分隔行,因此输入行上的 Scanner.nextLine() :

1 2 3 4 5 '\u2028' 6 7 8
只会读到
1 2 3 4 5

我认为,如果我可以强制扫描仪使用模式

[\n\r\u2029\u0085]
(默认扫描仪模式,没有 NEW_LINE 符号),这将解决我的问题。如何读取整个字符串而忽略
\u2028
符号?

java parsing text java.util.scanner readline
1个回答
0
投票

@Ivar 精彩解决方案的代码:

 String input = "1 2 3 4 5 \u2028 6 7 8\n9 10";
    Scanner scanner = new Scanner(input).useDelimiter(Pattern.compile("[\n\r\u2029\u0085]"));
    if (scanner.hasNext()) {
        String result = scanner.next().replaceAll("\u2028", "");
        System.out.println(result);
    }
    scanner.close();
© www.soinside.com 2019 - 2024. All rights reserved.