「XXX-L格式的員工標識號(字符串),其中每個X是0-9範圍內的數字,L是範圍'A' - 'M'中的字母(小寫和大寫字母是可以接受的)「Java更好的方式來編碼這個簡單的參數攝入量?
上面是一個字段,它是構造函數的參數。現在,我計劃確保字符串的前3個字母是0-9之間的數字,然後確保索引4中有短劃線,然後確保AM之間有一個字母在第五個索引中,全部使用if else語句。有沒有更好的方法來做到這一點,比如輸入參數不必如此精確,程序能夠自行修復?謝謝。
我編寫,並嘗試正則表達式表達工具:
import java.util.regex.*;
public class Employee {
private String eName;
private String IDNumber;
public Employee(String name, String number) {
String regex = "[0-9][0-9][0-9][\\-][a-mA-M]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(number);
this.eName = name;
if(matcher.matches()) {
this.IDNumber = number;
} else{
this.IDNumber = "999-M";
}
}
public String getNumber() {
System.out.println(IDNumber);
return IDNumber;
}
public static void main(String[] args) {
Employee e = new Employee("John", "123-f");
e.getNumber();
Employee c = new Employee("Jane","25z");
c.getNumber();
}
}
我還沒有徹底的測試,但它的工作原理,但看着別人的正則表達式的表情,雷似乎很newbish。我想知道是否有人可以幫助我構建一個更短或更好的正則表達式。
不要簡單地問了代碼,顯示你的努力 – Baby
如果有做的更好的辦法你只能問如果你事先做了一些事情......我沒有看到任何代碼,所以我認爲你沒有做任何事情。在這種情況下,首先嚐試一下。 –
如果你知道'regex',你可以在沒有多個if語句的情況下進行驗證。 –