【Java】练习:手机号屏蔽、身份证信息查看、敏感词替换

一、substring字符串截取

1、字符串截取:String substring(int beginIndex, int endIndex),它可以从一个大的字符串中把字符串的一部分给截取出来。括号里面传递的就是索引,从 beginIndex(开始索引) 开始截取,截取到 endIndex(结束索引)。

PS:

1、包头不包尾,包左不包右。

2、只有返回值才是截取的小串,它对原来的字符串是没有任何影响的,因为字符串本身是不能发生变化的。

2、substring 还有一个重载的方法,就是一个参数的,我们只需要传入一个 beginIndex ,默认截取到末尾。


二、手机号屏蔽

需求:以字符串的形式从键盘接受一个手机号,将中间四位号码屏蔽,最终效果为:131****9468

package com.itheima.stringdemo;

public class StringDemo10 {
    public static void main(String[] args) {
        //1.获取一个手机号码
        String phoneNumber = "13112349468";

        //2.截取手机号码前面三位,注意 “phoneNumber.substring(0, 3)” 一定要复制给新的变量,原字符串是不改变的!
        String start = phoneNumber.substring(0, 3);

        //3.截取手机号码后面四位
        String end = phoneNumber.substring(7);

        //4.拼接
        String result = start + "****" + end;

        //5.打印
        System.out.println(result);
    }
}

三、身份证信息查看

身份证的每一位都是有固定的含义:

  • 1、2位:省份
  • 3、4位:城市
  • 5、6位:区县
  • 7-14位:出生年、月、日
  • 15、16位:所在地派出所
  • 17位:性别(奇数男性,偶数女性)
  • 18位:个人信息码(随机产生)

要求打印内容方式如下:

​ 人物信息为:

​ 出生年月日:XXXX年X月X日

​ 性别为:男/女

package com.itheima.stringdemo;

public class StringDemo11 {
    public static void main(String[] args) {
        //1.定义一个字符串记录身份证号码
        String id = "321281202001011234";

        //2.获取出生年月日
        String year = id.substring(6, 10);
        String month = id.substring(10, 12);
        String day = id.substring(12, 14);


        System.out.println("人物信息为:");
        System.out.println("出生年月日:" + year + "年" + month + "月" + day + "日");

        //3.获取性别
        char gender = id.charAt(16);//'3'  ---> 3
        //利用ASCII码表进行转换
        //'0' --->  48
        //'1' --->  49
        //'2' --->  50
        //'3' --->  51
        //'4' --->  52
        //'5' --->  53
        //'6' --->  54
        //'7' --->  55
        //'8' --->  56
        //'9' --->  57

        // 如果忘记了'0'在ASCII码表中对应的数字,可以通过 System.out.println('0' + 0); 获得
        // 也可以直接 int num = gender - '0';
        int num = gender - 48;
        if(num % 2 == 0){
            System.out.println("性别为:女");
        }else{
            System.out.println("性别为:男");
        }
    }
}

四、replace替换

String replace(旧值, 新值) —— 替换。

replace()replaceAll() 都是替换所有匹配的字符串。

旧值:你要把谁进行替换;新值:替换成的内容。

注意点:字符串本身是不能发生变化的,只有返回值才是替换之后的结果。


五、敏感词替换

需求1:键盘录入一个 字符串,如果字符串中包含(TMD),则使用***替换

package com.itheima.stringdemo;

public class StringDemo12 {
    public static void main(String[] args) {
        //1.获取到说的话
        String talk = "你玩的真好,以后不要再玩了,TMD";

        //2.把里面的敏感词TMD替换为***
        String result = talk.replace("TMD", "***");

        //3.打印结果
        System.out.println(result); // 你玩的真好,以后不要再玩了,***
    }
}

需求2:如果要替换的敏感词比较多怎么办?

public class Test10多个敏感词替换 {
    public static void main(String[] args) {
        //实际开发中,敏感词会有很多很多

        //1.先键盘录入要说的话
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要说的话");
        String talk = sc.next();//后裔你玩什么啊,TMD,GDX,ctmd,ZZ

        //2.定义一个数组用来存多个敏感词
        String[] arr = {"TMD","GDX","ctmd","ZZ","lj","FW","nt"};

        //3.把说的话中所有的敏感词都替换为***

        for (int i = 0; i < arr.length; i++) {
            //i 索引
            //arr[i] 元素 --- 敏感词
            talk = talk.replace(arr[i],"***");
        }

        //4.打印结果
        System.out.println(talk);//后裔你玩什么啊,***,***,***,***
    }
}

六、查询String类帮助文档

String类 定义在 java.lang 包是Java的核心包。所以我们在使用 String 这个类的包是不需要导包的。

再看下面对类的描述,Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现,示例就是对象,在Java里面凡是有双引号的都是String这个类的对象。

字符串是常量:它们的值在创建之后不能更改。

image-20240407232558523

关于它的版本,是 JDK1.0 出现的,因此在所有版本当中,都是可以使用的。

image-20240407232829661

再往下,看它的构造

image-20240407233032601

再往下,看它的成员方法,它的成员方法有很多很多,这些方法千万不要去背,以后用到了就到API文档来找就行了。

image-20240407233146647


七、操作字符串其他的类

第一个类在这里拼接了1000000个字符串,右键运行。

它虽然说也能拼接,但是程序一直没有结果,需要等很久很久才能等到结果。

因此当数据量比较大的时候,一般是不会用字符串直接去拼接的。

public class StringBuilderDemo1 {
    public static void main(String[] args) {
        String s = "";
        for (int i = 0; i < 1000000; i++) {
            s = s + "abc";
        }
        System.out.println(s);
    }
}

而是使用下列代码的方式,右键运行,‘刷’ 以下结果就出来了。

public class StringBuilderDemo2 {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < 1000000; i++) {
            sb.append("abc");
        }
        System.out.println(sb);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值