2016-07-22 15 views
0

Im Arbeiten an einem Projekt, jetzt hat der Benutzer eine RFID eingeben, die eine Zeichenfolge mit 9 Zeichen lang und in hexadezimaler Darstellung sein muss, so dass jedes Zeichen ist entweder eine Ziffer von 0 bis 9 oder einer der Buchstaben A bis F. (Groß-/Kleinschreibung wird ignoriert)Java regulären Ausdruck Zeichen in einer Zeichenfolge

Dann muss ich auch eine Eingabe der Regalposition, die auf 6 Zeichen festgelegt ist, nehmen, das erste Zeichen ist "s" zu bezeichnen, dass es eine Regalposition ist und es folgt eine 5-stellige Nummer. EX: "s04013" (Groß-/Kleinschreibung wird nicht berücksichtigt)

Ich benutze einen Scanner, um die Eingänge in den Variablen RFID und originalLocation zu speichern. Ich habe zwei Fragen:

1) Wie kann ich überprüfen und stellen Sie sicher, dass die Eingabe gültig ist, so kann ich eine Ausnahme auslösen, wenn nicht? Ich denke, ich muss reguläre Ausdrücke verwenden, aber ich bin mir nicht sicher.

2) Gibt es eine Möglichkeit, die Länge eines Strings auf eine bestimmte Anzahl von Zeichen zu fixieren?

Jede Hilfe/Beratung würde sehr geschätzt werden Vielen Dank!

+0

Können Sie einige Beispiel-Strings bereitzustellen, die angepasst werden sollen? – ngrj

Antwort

0

(s [0-9] {5} | [0-9a-f] {9})

Dieser reguläre Ausdruck sollte Ihr Problem lösen.

See DEMO here

String str = "s04013"; 
String regex = "(s[0-9]{5}|[0-9a-f]{9})"; 
if(str.matches(regex)) { 
    /*Do something*/ 
} else { 
    throw new Exception("Token does not matach"); 
} 
+0

Vielen Dank für Ihre Hilfe! –

+0

Froh, dass die Antwort hilfreich war. Bitte überlege, meine Antwort zu akzeptieren. – ngrj

0

Ich weiß nicht, ob ich Ihre Frage richtig verstanden hat, aber das ist, was ich mit aufkommen, was ich aus Ihrer Frage gesammelt. Code:

import java.util.Scanner; 

public class RegexTry { 
    public static void main(String args[]){ 

    Scanner scanner = new Scanner(System.in); 
    String RFIDreg = "^[0-9A-Fa-f]{9}$"; 
    String Shelfreg = "^s[0-9]{5}$"; 

    System.out.print("Enter RFID: "); 
    String RFIDString = scanner.nextLine();//input RFID string 

    /*Check for RFID string*/ 
    if(RFIDString.matches(RFIDreg)){ 
     System.out.println("Correct"); 
    } 
    else{ 
     System.out.println("False"); 
    } 
    /*Check for RFID string*/ 

System.out.print("Enter Shelf Position: "); 
String Shelfstring = scanner.nextLine();//input Shelf string 

    /*Check for Shelf string*/ 
    if(Shelfstring.matches(Shelfreg)){ 
     System.out.println("Correct"); 
    } 
    else{ 
     System.out.println("False"); 
    } 
    /*Check for Shelf string*/ 
} 

}

+0

Vielen Dank für Ihre Hilfe! –