这是我的问题:
为电话号码创建一个构造函数,给定本地号码的 xxx-xxx-xxxx 或 xxx-xxxx 形式的字符串。如果格式无效,则抛出异常。
所以我想使用正则表达式来验证它,但我不知道我做得是否正确。另外我必须抛出什么样的异常?我需要创建自己的例外吗?
public TelephoneNumber(String aString){
if(isPhoneNumberValid(aString)==true){
StringTokenizer tokens = new StringTokenizer("-");
if(tokens.countTokens()==3){
areaCode = Integer.parseInt(tokens.nextToken());
exchangeCode = Integer.parseInt(tokens.nextToken());
number = Integer.parseInt(tokens.nextToken());
}
else if(tokens.countTokens()==2){
exchangeCode = Integer.parseInt(tokens.nextToken());
number = Integer.parseInt(tokens.nextToken());
}
else{
//throw an excemption here
}
}
}
public static boolean isPhoneNumberValid(String phoneNumber){
boolean isValid = false;
//Initialize reg ex for phone number.
String expression = "(\\d{3})(\\[-])(\\d{4})$";
CharSequence inputStr = phoneNumber;
Pattern pattern = Pattern.compile(expression);
Matcher matcher = pattern.matcher(inputStr);
if(matcher.matches()){
isValid = true;
}
return isValid;
}
嗨,抱歉,是的,这是作业。对于此分配,唯一有效的格式是 xxx-xxx-xxxx 和 xxx-xxxx,所有其他格式 (xxx)xxx-xxxx 或 xxxxxxxxxx 在这种情况下均无效。
我想知道我的正则表达式是否正确
所以我想使用正则表达式来验证它,但我不知道我做得是否正确。
确实看起来过于复杂。还有,匹配xxx-xxx-xxxx
or xxx-xxxx
where x
是一个数字可以做得更好"(\\d{3}-){1,2}\\d{4}"
。要了解有关正则表达式的更多信息,我建议阅读http://正则表达式.info.
另外我必须抛出什么样的异常?我需要创建自己的例外吗?
A ValidatorException
看起来很简单。
public static void isPhoneNumberValid(String phoneNumber) throws ValidatorException {
if (!phoneNumber.matches(regex)) {
throws ValidatorException("Invalid phone number");
}
}
如果您出于某种原因不想自己创建一个,那么我可能会选择IllegalArgumentException
,但我仍然不建议这样做。
也就是说,这种验证当然不涵盖国际和/或外部电话号码。除非这确实是家庭作业,否则我建议重新考虑验证。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)