目錄
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("性别為:男");
}
}
}