2011-10-27 52 views
6

Người dùng nhập bất kỳ chuỗi nào và chương trình phân biệt chuỗi có phải là ID sản phẩm đủ điều kiện hay không.Cách kiểm tra xem chuỗi có thuộc một mẫu cụ thể không

ID sản phẩm đủ điều kiện là bất kỳ chuỗi nào bao gồm hai thủ đô và bốn số. (Ví dụ: "TV1523")

Tôi làm cách nào để thực hiện chương trình này?

+1

... bằng cách suy nghĩ về nó và cố gắng .... –

+3

-1: nghe như bài tập về nhà, có lẽ bạn nên thử giải quyết nó cho chính mình –

+0

Alex đây không phải là bài tập về nhà. – schizoid322

Trả lời

25

Bạn nên so sánh chuỗi sử dụng một biểu thức chính quy, ví dụ:

str.matches("^[A-Z]{2}\\d{4}") sẽ cung cấp cho bạn một giá trị boolean cho dù nó có khớp hay không.

Các biểu hiện thường xuyên hoạt động như sau:

^ 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). 

Sử dụng phương pháp này, bạn có thể lặp qua bất kỳ số lượng dây và kiểm tra xem chúng phù hợp với tiêu chí nhất định.

Tuy nhiên, bạn nên đọc các biểu thức chính quy, có nhiều cách lưu trữ mẫu hiệu quả hơn nếu bạn lo lắng về hiệu suất.

+1

Bạn không bỏ lỡ '$', '^' của bạn là không cần thiết. Phương thức 'matcher()' cố khớp với đầu vào hoàn chỉnh dựa vào mẫu, vì vậy nó có hai neo "xây dựng trong". [class Matcher] (http://download.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html). Dù sao 1 cho lời giải thích của mô hình. – stema

+0

Cảm ơn bạn đã giải thích chi tiết. Tôi thực sự đánh giá cao sự giúp đỡ của bạn! – 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 

một cái gì đó như thế, ngoại trừ bạn có thể cây đũa phép để kèm theo readLine() trong vòng một catch thay: x

+0

Cảm ơn câu trả lời, nhưng có vẻ như chỉ có 'TV1523' là hợp lệ trong câu trả lời của bạn. Ý tôi là tất cả hai thủ đô và bốn số đều hợp lệ. – schizoid322

+0

@ schizoid322 đó là một mẫu, cố gắng để mã một chút của chính mình;) –

4

Bạn nên xem kỹ hơn các cụm từ thông dụng. Hướng dẫn là ví dụ: tại đây tại regular-expressions.info.

Một ví dụ cho mẫu của bạn có thể

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

bạn có thể nhìn thấy nó here on Regexr.com một nơi tốt để kiểm tra biểu thức thông thường trên mạng.

Đây là java regex tutorial ở đó bạn có thể thấy cách bạn gọi chúng bằng Java.

+0

Aaaa. Tôi đã bỏ lỡ $. Làm tốt! – Ewald

+0

Tôi thực sự đánh giá cao câu trả lời hay của bạn. Câu trả lời của bạn gần như hoàn hảo! – schizoid322

Các vấn đề liên quan