发现

2012-10-20 21 views
2

目前我正在试图通过阅读一些基本的细胞,格式如下:发现

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

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

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

我也可能只是以某种方式建立起来,但这让我感到痛苦缓慢。

回答

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 
+0

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

+0

请参阅编辑答案.. –