發現

2012-10-20 43 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

請參閱編輯答案.. –