Java扫描器-找到|之前的下一个字符串

Java扫描器-找到|之前的下一个字符串,java,java.util.scanner,Java,Java.util.scanner,目前,我正在尝试以以下格式阅读一些基本单元格: +-------+-------+ | | | +-------+-------+ 现在我需要获取单元格内容的字符串表示形式,并将其发送给另一个方法。问题是单元格没有预定义的长度。我从文件中读取这些内容,所以我最简单的选择应该是使用我已经设置好的扫描仪。问题是,我真的不知道如何处理这个案子 我有一种强烈的感觉,我需要以某种方式使用该模式,但我完全不知道如何去做 我也可能只是以某种方式构建它,但这让我感到非常缓慢。看,它有一

目前,我正在尝试以以下格式阅读一些基本单元格:

+-------+-------+
|       |       |
+-------+-------+
现在我需要获取单元格内容的字符串表示形式,并将其发送给另一个方法。问题是单元格没有预定义的长度。我从文件中读取这些内容,所以我最简单的选择应该是使用我已经设置好的扫描仪。问题是,我真的不知道如何处理这个案子

我有一种强烈的感觉,我需要以某种方式使用该模式,但我完全不知道如何去做

我也可能只是以某种方式构建它,但这让我感到非常缓慢。

看,它有一个例子:

String input = "1 fish 2 fish red fish blue fish";
 Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
 System.out.println(s.nextInt());
 System.out.println(s.nextInt());
 System.out.println(s.next());
 System.out.println(s.next());
 s.close(); 
打印以下输出:

 1
 2
 red
 blue 
您可以使用
|
作为分隔符

编辑:若要使用
作为分隔符,应将其转义,请使用
\\s*\\\\\\\\\\s*
\\s*[\\\\\\\\\\\\\\\\\\\
。如果按原样使用
|
,则只会得到第一个值
1
和异常
输入不匹配异常

请参阅以下程序和输出:

public class Test {
    public static void main(String[] args) {
        String input = "1 | 2 | red | blue |";
        Scanner s = new Scanner(input).useDelimiter("\\s*\\|\\s*"); // or use "\\s*[|]\\s*"
        System.out.println(s.nextInt());
        System.out.println(s.nextInt());
        System.out.println(s.next());
        System.out.println(s.next());
        s.close();
    }
}
输出:

1
2
red
blue

它似乎将|视为逻辑运算符,而不是字符。这样调用它:“\\s | \\s”只从单元格中获取第一项,当我尝试使用\引用它时,它会给我一个无效的转义序列错误。