2011-10-27 11 views
6

L'utente immette qualsiasi stringa e il programma distingue se la stringa è ID prodotto qualificante o meno.Come verificare se una stringa è di uno schema specifico

Gli ID prodotto qualificanti sono qualsiasi stringa costituita da due maiuscole e quattro numeri. (Ad esempio, "TV1523")

Come posso fare questo programma?

+1

... pensandoci, e facendo un tentativo .... –

+3

-1: sembra un compito a casa, probabilmente dovresti provare a risolverlo da solo –

+0

Alex questo non è compito. – schizoid322

risposta

25

si dovrebbe confrontare la stringa utilizzando un'espressione regolare, ad esempio:

str.matches("^[A-Z]{2}\\d{4}") ti fornirà un valore booleano sul fatto che corrisponda o meno.

L'espressione regolare funziona come segue:

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

Utilizzando questo metodo, è possibile scorrere un qualsiasi numero di stringhe e verificare se corrispondono ai criteri specificati.

Si dovrebbe leggere sulle espressioni regolari, tuttavia, ci sono modi più efficienti di memorizzare il modello se si è preoccupati per le prestazioni.

+1

Non ti sfuggi a '$', il tuo '^' non è necessario. Il metodo 'matcher()' cerca di far corrispondere l'input completo con il pattern, quindi ha le due ancore "build in". [class Matcher] (http://download.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html). Ad ogni modo +1 per la spiegazione del pattern. – stema

+0

Grazie per la spiegazione dettagliata. Apprezzo molto il vostro aiuto! – 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 

qualcosa di simile, tranne che si potrebbe bacchetta per racchiudere la readLine() all'interno di un tentativo di cattura, invece: x

+0

Grazie per la risposta, ma sembra che solo "TV1523" sia valido nella tua risposta. Voglio dire che tutte e due le maiuscole e i quattro numeri sono validi. – schizoid322

+0

@ schizoid322 che è un esempio, prova a codificare un po 'da solo;) –

4

Si dovrebbe dare un'occhiata più da vicino alle espressioni regolari. Un tutorial è ad es. qui a regular-expressions.info.

Un esempio per il vostro modello potrebbe essere

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

si può vedere here on Regexr.com un buon posto per testare le espressioni regolari in linea.

Ecco java regex tutorial qui puoi vedere come li chiami in Java.

+0

Aaaa. Ho perso il $. Molto bene! – Ewald

+0

Apprezzo molto la tua buona risposta. La tua risposta è quasi perfetta! – schizoid322

Problemi correlati