Java Scanner - 下一个字符串,直到|找到了

时间:2012-10-20 04:52:28

标签: java java.util.scanner

目前我正试图通过以下格式阅读一些基本单元格:

+-------+-------+
|       |       |
+-------+-------+

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

我有一种强烈的感觉,我需要以某种方式使用该模式,但我完全失去了如何做到这一点。

我也可能只是以某种方式建立它,但这让我感到非常痛苦。

1 个答案:

答案 0 :(得分:1)

javadoc for 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*[|]\\s*。如果您按原样使用|,那么您将只获得第一个值1和例外InputMismatchException

见下面的程序和输出:

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