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

第一种方法(正则表达式与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);
 }
}

在这里插入图片描述

你可能感兴趣的:(Java实现为手机号码或身份证号码打星号)