|
依据数理,拆分手机号,java源码拆分手机号 ,算法如下:
* 从第四位开始算起,第四位与第三位拼接看一下,然后再与第五位看一下,
* 如果后面一位与前面相同,或与前前一位相同,或者是0或5特殊,则继续查找下一位
13368529063,拆分后为[36, 685, 852, 290, 906, 63]
- /**
- * @Description: 查找符合条件的数值
- * @param i
- * @param mobile
- * @return: java.lang.String
- * @Author: estar
- * @Date: 2023/7/14 11:45
- */
- public String getD(int i,String mobile){
- String[] chrArray = {"0", "5"};
- String[] a=mobile.split("");//char[] a=str.toCharArray();
- String preChr="",curChr="",nextChr="",preGenStr="";
- //
- preGenStr=a[i];
- boolean bFirst=true;
- for(;i<a.length-1;i++){
- preChr=a[i-1];
- curChr=a[i];
- nextChr=a[i+1];
- System.out.println("preChr:"+preChr+",curChr:"+curChr+",nextChr:"+nextChr);
- //
- boolean isContains1 = Arrays.asList(chrArray).contains(nextChr);
- if(!isContains1 && !curChr.equals(nextChr) && !preChr.equals(nextChr) ){
- if(bFirst){
- bFirst=false;
- preGenStr+=nextChr;
- }else{
- break;
- }
- }else{
- preGenStr+=nextChr;
- }
- }
- return preGenStr;
- }
- //拆分手机号码
- public List<String> GetMobileData(String strMobile){
- //分解手机号
- // String strMobile="18836998247";//13368529063(ok)
- String[] chrArray = {"0", "5"};
- String[] a=strMobile.split("");//char[] a=str.toCharArray();
- System.out.println(Arrays.toString(a));
- String preChr="",curChr="",nextChr="",genStr="";
- List<String> list = new ArrayList<>();
- preChr=a[2];
- curChr=a[3];
- nextChr=a[4];
- //第一次,与左侧对比
- //判断是否为特殊字符
- boolean isContains1 = Arrays.asList(chrArray).contains(curChr);
- if(!isContains1 && !curChr.equals(preChr)){
- //判断前一个是否为特殊字符,与前一个相加
- boolean isContains2 = Arrays.asList(chrArray).contains(preChr);
- if(!isContains2){
- genStr=preChr+curChr;
- //判断下一位是否为前一位相同,如果相同,则加入
- if(!preChr.equals(nextChr) && !curChr.equals(nextChr)){
- //加入生成字符
- System.out.println(genStr);
- list.add(genStr);
- }
- }
- }
- //第一次,与右侧对比
- for(int i=3;i<a.length-1;i++){
- boolean isContains3 = Arrays.asList(chrArray).contains(a[i]);
- if(isContains3){
- continue;
- }
- genStr=getD(i,strMobile);
- //加入生成字符
- System.out.println(genStr);
- list.add(genStr);
- }
-
- return list;
- }
-
- /**
- * @Description: 拆分手机号 ,算法如下:
- * 从第四位开始算起,第四位与第三位拼接看一下,然后再与第五位看一下,
- * 如果后面一位与前面相同,或与前前一位相同,或者是0或5特殊,则继续查找下一位
- * @return: void
- * @Author: estar
- * @Date: 2023/7/14 11:37
- */
- @Test
- public void Test05(){
- List<String> list=GetMobileData("13368529063");
- System.out.println(list);
- }
复制代码
|
|