您的位置:首页 > 编程语言 > Java开发

Java实现为手机号码或身份证号码打星号

2020-07-13 05:56 3551 查看

第一种方法(正则表达式与replaceAll的使用)

需要的知识点:
1.如何使用Scanner
(相关知识点在:https://blog.csdn.net/xueyijin/article/details/103558486)
2.正则表达式的使用

先不废话,直接上代码以及运行结果图

import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的身份证号码:");
String str = scanner.nextLine();
//replaceAll(A,B) 是用B去替代A的内容
//正则表达式的使用:后面会说到
String str_2 = str.replaceAll("(?<=[\\w]{3})\\w(?=[\\w]{4})", "*");
System.out.println("请核对你的信息:" + str_2);
}
}

正则表达式的使用(本文只说有关已经使用的,其余可自行百度)

(?<=[\\w]{3})\\w(?=[\\w]{4})
划分为三个部分1.(?<=[\\w]{3})	 2.\\w 	  3.(?=[\\w]{4})
整体意思就是:匹配到内容是 除了前3个和后4个 剩下的内容。
(加上replaceAll函数,就是 除了前3个和后4个 剩下的内容 全部替换为 * ).

1. \w表示匹配字母、数字、下划线
2. 为什么上面都是用双\\呢,因为在java代码中,需要加个\进行转义,而本身就是 \w为一个整体代码相应内容,加起来就是两个\\。
3. [\\w]{3}的意思是 匹配三个相应(字母或者数字或者下划线)的内容。
4. 同理,[\\w]{4}的意思是 匹配4个相应的内容。
5. (?<=xxxx)的意思是前面匹配但是不保留,比如:Hello world   (?<=H)则匹配到的内容是 ello world 不保留H,
6. 在第五点中,如果改成 (?<=H).{3} 则匹配到的内容是 ell,即{3}代表个数。
7. 整体(?<=[\\w]{3})就是代表 匹配除了前3个字母或者数字或者下划线的内容。
8. (?=[\\w]{4})就是代表 匹配除了后4个字母或者数字或者下划线的内容。
9. (?=xxxx)的意思是后面匹配但是不保留,

第二种方法(substring的使用)

不废话,直接上图

public class Test3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的身份证号码:");
String str = scanner.nextLine();
//substring(int beginIndex,int endIndex),用于截取相应长度的字符串
//substring截出的内容是包括beginIndex的内容,不包括endIndex的内容
//比如:Hello(对应的序号有 0 1 2 3 4) substring(0,2)对应的内容是 He
//使用截取方法,把身份证前后几位获取到,再中间加入**符号,再输出即可。
String str_2 = str.substring(0, 3);
String str_3 = str_2 + "****" + str.substring(str.length()-4,str.length());
System.out.println("请核对你的信息:" + str_3);
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: