黑马程序员技术交流社区

标题: 有关正则表达式 [打印本页]

作者:     刘如洁    时间: 2012-11-13 22:00
标题: 有关正则表达式
本帖最后由     刘如洁 于 2012-11-17 18:33 编辑

如何将  电话号码 18810709043 替换成 188******43 中间屏蔽。
作者: 邵天强    时间: 2012-11-13 22:40
本帖最后由 邵天强 于 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();//返回一个字符串
}


}

希望有所帮助

作者:     刘如洁    时间: 2012-11-13 23:13
学习学习
作者:     刘如洁    时间: 2012-11-13 23:22
我怎么打印有问题,我把代码全复制了也这样

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

捕获.JPG

作者: 葬天    时间: 2012-11-14 00:07
  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:50
本帖最后由 邵天强 于 2012-11-14 09:59 编辑
    刘如洁 发表于 2012-11-13 23:22
我怎么打印有问题,我把代码全复制了也这样


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

FileDemo4.rar

700 Bytes, 下载次数: 105


作者:     刘如洁    时间: 2012-11-14 18:40
邵天强 发表于 2012-11-14 09:50
当中有两段程序,我发时不是这样,但是变成了buf.append(ch);我修改后,还是改不了,估计是编辑器的问题 ...

没什么的,我就是自己在家练习的时候看到这个问题,就是自己练练,错了也好,自己可以试着改一下。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2