电话号码验证
package com.dbs.m800.dao.offer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Test test=new Test();
String str="80000-86169";
String s=test.prefixValidMethod(str);
System.out.println(s);
}
/**
* Prefixs验证
* 各 prefix段验证,只能为 86135或 86158-86159这样的格式,各prefix段之间用分号分开
* 所有prefix之间,不能有从属关系
* @return
*/
public String prefixValidMethod(String str){
String[] prefixs=str.replaceAll(",", ";").split(";");
if(prefixs==null || prefixs.length==0){
return "OK";
}
List<String> list=new ArrayList<String>();
for (String prefix:prefixs) {
if(prefix.contains("-")){
int i=prefix.indexOf("-");
int j=prefix.lastIndexOf("-");
if(i!=j){
return ValidInfoClass.manyMinus+":"+prefix;
}
if(i==0||(i+1==prefix.length())|| (i!=prefix.length()-i-1)){
return ValidInfoClass.commonLength+":"+prefix;
}
int first=Integer.parseInt(prefix.substring(0, i));
int last=Integer.parseInt(prefix.substring(i+1));
if(first>=last){
return prefix.substring(0, i)+ValidInfoClass.lessThan+":"+prefix.substring(i+1);
}
if(last-first>10){
return ValidInfoClass.rangePrefix+":"+prefix;
}
for(int m=first;m<=last;m++){
list.add(m+"");
}
}else{
list.add(prefix);
}
}
//得到新的数组
Object[] obj=list.toArray();
Arrays.sort(obj);
for(int i=0;i<obj.length-1;i++){
if(obj[i+1].equals(obj[i])){
}
if(obj[i+1].toString().contains(obj[i].toString())){
return ValidInfoClass.subordinate+":"+obj[i].toString()+" "+obj[i+1].toString();
}
}
return "OK";
}
static class ValidInfoClass{
//包含多个-
static String manyMinus="包含多个-";
//左右位数要相等
static String commonLength="左右位数要相等";
//应该小于
static String lessThan="应该小于";
//从属关系
static String subordinate="从属关系";
//有重复的prefix
static String repeatPrefix="重复的Prefix";
//范围只能是在10以内
static String rangePrefix="范围在10以内";
}
}