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”只从单元格中获取第一项,当我尝试使用\引用它时,它会给我一个无效的转义序列错误。