2016-07-22 15 views
0

私は現在、ユーザーがRFIDを入力するように作業しています。これは9文字の長さに固定され、16進数で表される文字列でなければならないため、各文字は0〜9の数字です。 (大文字と小文字は区別されません)文字列内のJava正規表現文字

次に、6桁の固定された棚の位置を入力する必要があります。最初の文字は棚の位置を示すために「s」です5桁の数字が続きます。 EX: "s04013"(大文字と小文字は区別されません)

私はスキャナーを使ってRFIDとoriginalLocation変数に入力を保存しています。私は2つの質問があります:

1)入力が有効であることを確認して、そうでない場合に例外をスローする方法を教えてください。私は正規表現を使わなければならないと思いますが、わかりません。

2)文字列の長さを指定された文字数に修正する方法はありますか?

助けていただけたら助かりますか? ありがとうございました!

+0

はあなたが一致することになっているいくつかの例の文字列を提供することはできますか? – ngrj

答えて

0

(S [0-9] {5} | [0-9A-F] {9})

この正規表現は、あなたの問題を解決しなければなりません。

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

ありがとうございました! –

+0

その答えはうれしいです。私の答えを受け入れることを検討してください。 – ngrj

0

私は私が正しくあなたの質問を理解していれば知らないが、これは私はあなたの質問から収集何を思い付いたものです。 コード:

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

ありがとうございました! –