2011-10-27 114 views
6

用戶輸入任何字符串,程序會區分字符串是否符合產品ID。如何檢查字符串是否具有特定模式

符合條件的產品ID是由兩個大寫字母和四個數字組成的任意字符串。 (例如「TV1523」)

我該如何製作此程序?

+1

...通過思考,並嘗試...... –

+3

-1:聽起來像作業,你應該嘗試自己解決它 –

+0

亞歷克斯這是不是功課。 – schizoid322

回答

25

你應該使用正則表達式比較字符串,例如:

str.matches("^[A-Z]{2}\\d{4}")會給你一個布爾值來判斷它是否匹配。

正則表達式的工作原理如下:

^ Indicates that the following pattern needs to appear at the beginning of the string. 
[A-Z] Indicates that the uppercase letters A-Z are required. 
{2} Indicates that the preceding pattern is repeated twice (two A-Z characters). 
\\d Indicates you expect a digit (0-9) 
{4} Indicates the the preceding pattern is expected four times (4 digits). 

使用這種方法,你可以通過任何數量的字符串循環,並檢查它們是否符合規定的標準。

您應該閱讀正則表達式,但如果您擔心性能,則存在更有效的模式存儲方式。

+1

您不會錯過'$',您的'^'是不必要的。 'matcher()'方法試圖匹配模式的完整輸入,所以它有兩個錨「內置」。 [class Matcher](http://download.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html)。無論如何+1的模式的解釋。 – stema

+0

感謝您的詳細解釋。我非常感謝你的幫助! – schizoid322

0
public static void main(String[] args) throws Exception { 
    String id = "TV1523"; 
    BufferedReader br = new BufferedReader((new InputStreamReader(System.in))); 
    String tocompare = br.readLine(); 
    if(tocompare.equals(id)) { //do stuff 

類似的東西,除了你可能魔杖一試捕內封閉的readLine()代替:X

+0

感謝你的答案,但似乎只有'TV1523'在你的答案中是有效的。我的意思是所有的兩個首都和四個數字都是有效的。 – schizoid322

+0

@ schizoid322這是一個示例,嘗試自己編碼一點;) –

4

你應該仔細看看正則表達式。教程是例如這裏在regular-expressions.info

您模式的一個例子可能是

^[A-Z]{2}\d{4}$ 

你可以看到它here on Regexr.com的好地方在線測試正則表達式。

這裏是java regex tutorial那裏你可以看到你如何用Java調用它們。

+0

Aaaa。我錯過了$。做得好! – Ewald

+0

我真的很感謝你的回答。你的答案几乎完美! – schizoid322

相關問題