A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©     刘如洁 中级黑马   /  2012-11-13 22:00  /  1429 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由     刘如洁 于 2012-11-17 18:33 编辑

如何将  电话号码 18810709043 替换成 188******43 中间屏蔽。

6 个回复

倒序浏览
本帖最后由 邵天强 于 2012-11-14 09:47 编辑

package com.itheima;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class test {
public static void main(String[] args){
  String tel="18810709043";
  tel=replace(tel,3,tel.length()-2,"*");//调用replace方法
  System.out.println("替换后的手机号:"+tel);
}
public static String replace(String str,int firstIndex,int lastIndex,String register){
  char []ch=str.toCharArray();//把字符串转化成字符数组
  StringBuffer buf=new StringBuffer();//创建一个StringBuffer对象
  if(firstIndex>0){//判断firstIndex是否为0,如果为部位0,则firstIndex前面的不替换,加入到缓冲区buf中
   for(int i=0;i<firstIndex;i++){
    buf.append(ch);
   }
  }
  for(int i=firstIndex;i<lastIndex;i++){//firstIndex到lastIndex被register替换,然后添加到缓冲buf中
   buf.append(
register);
  }
  if(lastIndex<ch.length){//判断lastIndex是否为最后一个元素,如果不是,则不替换,直接添加到缓冲区buf中
   for(int i=lastIndex;i<ch.length;i++){
    buf.append(ch);
   }
  }
  return buf.toString();//返回一个字符串
}


}

希望有所帮助

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
学习学习
回复 使用道具 举报
我怎么打印有问题,我把代码全复制了也这样

捕获.JPG (26.4 KB, 下载次数: 25)

捕获.JPG

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!加油啊

查看全部评分

回复 使用道具 举报
  1. /**
  2. 需求:
  3. 电话号码 18810709043 替换成 188******43 中间屏蔽。
  4. @author yangmeicheng
  5. */
  6. public class RegxTest
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                 System.out.println(hideNumber("18810709043"));
  11.         }
  12.        
  13.         /**
  14.         完成电话号码位数隐藏操作
  15.         @param str 待操作电话号码
  16.         @return 隐藏六位后的电话号码
  17.         */
  18.         public static String hideNumber(String str)
  19.         {
  20.                 String info = null;
  21.                 String regxNumber = "1[3,5,8]\\d{9}";
  22.                 String regx = "(.)(.)(.)\\d{6}(.)(.)";
  23.                 String replacement = "$1$2$3******$4$5";
  24.                 if (!(str.matches(regxNumber)))
  25.                 {
  26.                         info = "号码格式出错,请检查。。";
  27.                 }
  28.                 else
  29.                 {
  30.                         info = str.replaceAll(regx,replacement);
  31.                 }

  32.                 return info;
  33.         }
  34. }
复制代码
正则有点白痴,不过实现了楼主的需求。。。。。
可以试试看看
回复 使用道具 举报
本帖最后由 邵天强 于 2012-11-14 09:59 编辑
    刘如洁 发表于 2012-11-13 23:22
我怎么打印有问题,我把代码全复制了也这样


当中有两段程序,我发时不是这样,但是变成了buf.append(ch);我修改后,还是改不了,估计是编辑器的问题。我给你发个附件,你看看吧,给你带来的麻烦,说声对不起

FileDemo4.rar

700 Bytes, 下载次数: 111

回复 使用道具 举报
邵天强 发表于 2012-11-14 09:50
当中有两段程序,我发时不是这样,但是变成了buf.append(ch);我修改后,还是改不了,估计是编辑器的问题 ...

没什么的,我就是自己在家练习的时候看到这个问题,就是自己练练,错了也好,自己可以试着改一下。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马