天天看點

Java知識【String相關案例】

目錄

​​2.11:金額轉換​​

​​2.11.1:案例需求​​

​​2.11.2:代碼實作​​

​​2.12:手機号屏蔽​​

​​2.13:敏感詞替換​​

​​2.14:身份證資訊檢視​​

2.11:金額轉換

把2135變成:零佰零拾零萬貳仟壹佰叁拾伍元

把789變成:零佰零拾零萬零仟柒佰捌拾玖元

2.11.1:案例需求

2.11.2:代碼實作

public class StringDemo9 {
    public static void main(String[] args) {
        //1.鍵盤錄入一個金額
        Scanner sc = new Scanner(System.in);
        int money;
        while (true) {
            System.out.println("請錄入一個金額");
            money = sc.nextInt();
            if (money >= 0 && money <= 9999999) {
                break;
            } else {
                System.out.println("金額無效");
            }
        }

        //定義一個變量用來表示錢的大寫
        String moneyStr = "";

        //2.得到money裡面的每一位數字,再轉成中文
        while (true) {//2135
            //從右往左擷取資料,因為右側是資料的個位
            int ge = money % 10;
            String capitalNumber = getCapitalNumber(ge);
            //把轉換之後的大寫拼接到moneyStr當中
            moneyStr = capitalNumber + moneyStr;
            //第一次循環 : "伍" + "" = "伍"
            //第二次循環 : "叁" + "伍" = "叁伍"
            //去掉剛剛擷取的資料
            money = money / 10;

            //如果數字上的每一位全部擷取到了,那麼money記錄的就是0,此時循環結束
            if (money == 0) {
                break;
            }
        }

        //3.在前面補0,補齊7位
        int count = 7 - moneyStr.length();
        for (int i = 0; i < count; i++) {
            moneyStr = "零" + moneyStr;
        }
        System.out.println(moneyStr);//零零零貳壹叁伍

        //4.插入機關
        //定義一個數組表示機關
        String[] arr = {"佰","拾","萬","仟","佰","拾","元"};
        //               零    零   零   貳   壹   叁   伍

        //周遊moneyStr,依次得到 零    零   零   貳   壹   叁   伍
        //然後把arr的機關插入進去

        String result = "";
        for (int i = 0; i < moneyStr.length(); i++) {
            char c = moneyStr.charAt(i);
            //把大寫數字和機關拼接到result當中
            result = result + c + arr[i];
        }

        //5.列印最終結果
        System.out.println(result);

    }


    //定義一個方法把數字變成大寫的中文
    //1 -- 壹
    public static String getCapitalNumber(int number) {
        //定義數組,讓數字跟大寫的中文産生一個對應關系
        String[] arr = {"零", "壹", "貳", "叁", "肆", "伍", "陸", "柒", "捌", "玖"};
        //傳回結果
        return arr[number];
    }

}      

2.12:手機号屏蔽

需求:以字元串的形式從鍵盤接受一個手機号,将中間四位号碼屏蔽

最終效果為:​

​131****9468​

代碼實作:

public class Test8手機号屏蔽 {
    public static void main(String[] args) {
        /*以字元串的形式從鍵盤接受一個手機号,将中間四位号碼屏蔽
        最終效果為:131****9468*/

        //1.鍵盤錄入一個手機号碼
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入手機号碼");
        String phoneNumber = sc.next();//13112349408

        //2.截取手機号碼中的前三位
        String star = phoneNumber.substring(0, 3);

        //3.截取手機号碼中的最後四位
        //此時我用substring方法,是用1個參數的,還是兩個參數的?1個參數的會更好
        //因為現在我要截取到最後,是以建議使用1個參數的。
        String end = phoneNumber.substring(7);

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

        System.out.println(result);

    }
}      

2.13:敏感詞替換

需求1:鍵盤錄入一個 字元串,如果字元串中包含(TMD),則使用***替換

public class Test9敏感詞替換 {
    public static void main(String[] args) {
        //1.定義一個變量表示罵人的話
        String talk = "後裔你玩什麼啊,TMD";


        //2.把這句話中的敏感詞進行替換
        String result = talk.replace("TMD", "***");

        //3.列印
        System.out.println(talk);
        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);//後裔你玩什麼啊,***,***,***,***

    }
}      

2.14:身份證資訊檢視

身份證的每一位都是有固定的含義:

  • 1、2位:省份
  • 3、4位:城市
  • 5、6位:區縣
  • 7-14位:出生年、月、日
  • 15、16位:所在地派出所
  • 17位:性别(奇數男性,偶數女性)
  • 18位:個人資訊碼(随機産生)

要求列印内容方式如下:

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

       int num = gender - 48;
        if(num % 2 == 0){
            System.out.println("性别為:女");
        }else{
            System.out.println("性别為:男");
        }
    }
}