2012-03-29 1 views
0

Ich muss Benutzereingabe von einem EditText gegen das beschriebene Muster überprüfen, bevor Sie es in meine Datenbank einfügen. Wenn es nicht übereinstimmt, möchte ich eine Fehlermeldung für den Benutzer anzeigen. Gibt es einen einfacheren Weg dies zu tun:überprüfen Sie, dass Text 3 Großbuchstaben Alphas gefolgt von 5 Ziffern vor dem Einfügen in die Datenbank

public boolean myCheckMethod() 
{ 
String s = myEditText.getText.toString(); 
if(s.length!=8) 
    return false; 
for(int i=0; i < 8; i++){ 
    if(i < 3) 
    if(!(Character.isLetter(s.charAt(i)) && Character.isUpperCase(s.charAt(i))) 
    return false; 
    if(i > 3) 
    if(!Character.isDigit(s.charAt(i))) 
    return false; 
} 

return true; 
} 

Es muss einen besseren Weg geben, dies zu tun !!

Antwort

0

Es gibt:

if(s.matches("[A-Z]{3}[0-9]{5}")) 
    return true; 
return false; 

Dann if-Anweisung in einem diese Methode verwenden, wenn Sie zu Ihrer Datenbank hinzufügen:

if(myCheckMethod()) 
{ 
    //code to add to db here 
} 
else 
    Toast 
    .makeText(this, "User error",Toast.LENGTH_LONG) 
    .show(); 
+0

Ich werde es versuchen und lassen Sie wissen –

+0

Es hat funktioniert! Es fängt sogar diejenigen, die nicht 8 Zeichen sind! Brillant; das passt Methode rettet Leben :-) –

+0

Gerne helfen: ^] – AnthonyW

0

Ihr Ansatz nicht unzumutbar ist. Sie könnten auch mit einem regulären Ausdruck testen. Vielleicht etwas wie [A-Z]{3}[0-9]{5}. Es kann jedoch Probleme mit ungewöhnlichen Zeichen in nicht-englischen Sprachen geben. Nicht sicher, ob es in Ihrem Fall wichtig ist.

0

REGEX ist der Weg zu gehen. Werfen Sie einen Blick auf this Antwort. Nicht genau dein Fall, aber gute Erklärungen.

This helfen

[AZ] {3} [0-9] {4} ist ein mögliches Muster, aber wie bei allen Dingen regex, wird jemand anderes mit einem besseren Muster beantworten;)

aber Sie erhalten die Idee ...

Prost

PS Sorry für die Betrogenen, bis ich Post gedrückt habe, war ich weit unten den Haufen ...