2012-10-21 30 views
3

我有代碼逐行檢查文本文件,但我不確定如何檢查特定格式。如果文本文件的格式如下,則打印出內容,否則會延遲顯示「文件不正確」的消息。在java中檢查文本文件格式

該行的第一行應該以S開頭,每行包含任何大寫字母,後跟一個冒號,而不是任何字母,數字或e。

+0

字符串有一個'startsWith(...)'方法,您可能希望使用。 –

+0

我不確定如何使用Java API方法解決這個問題,但是您應該關注研究的一般主題是「解析」。 – Kierrow

回答

1

您可以使用regular expressions輕鬆驗證格式:

//first line validator: 
String reg1 = "S:[A-Z01e]"; 
//next lines validator: 
String reg2 = "V:[A-Z01e]?[A-Z01e]?[A-Z01e]"; 

//examples/test cases: 
System.out.println("S:1".matches(reg1)); 
System.out.println("S:3".matches(reg1)); 
System.out.println("S:11".matches(reg1)); 

System.out.println("V:1e0".matches(reg2)); 
System.out.println("V:1e01".matches(reg2)); 
System.out.println("V:1e3".matches(reg2)); 

的正則表達式是:分別在第一SV,然後: ,然後是AZ ot 0或1或e之間的任何字符。
?表示0或1重複,所以[A-Z01e]?[A-Z01e]?[A-Z01e]表示1-3個字符,每個A-Z或0或1或e。

+0

我想我想用這個,我一直在尋找正則表達式,這似乎是一個很好的路要走。是否有任何提示如何在我的代碼中實現?我在JavaScript中使用了正則表達式,但我不認爲這真的爲我在Java中做好準備。謝謝! – infiniteSet

+0

@infiniteSet:沒什麼特別的,只要閱讀我鏈接的教程並開始練習 - 它會幫助你理解它。 – amit

0

我會在每一行上使用charAt(1)

scan.nextLine(); 
String line = scanner.next(); 
if(line.charAt(0).equals("S")) { 

} else { 

} 

我敢肯定這就是它是如何工作的

0

您可以使用正則表達式來實現這一目標:Regex Trails

例如,要檢查V:xxx,您可以使用:

V:[A-Z01e]{3} 

凡在大括號的數量是你要多少X的。