格式化字串 format()
阿新 • • 發佈:2021-08-13
格式化字串 format()
//有的也可以表示 更簡便
Date date = new Date();
System.out.printf("%tc",date);
格式化日期
Date date = new Date(); String year=String.format("%tY",date); String month=String.format("%tB",date); String day=String.format("%td",date); System.out.println("今年是"+year+"年"); System.out.println("現在是"+month); System.out.println("今天是"+day+"號");//輸出執行時的日期
常用日期格式轉換符
轉換符 | 說明 | 示例 |
---|---|---|
%te | 一個月中的某一天(1~31) | 2,12,22 |
%tb | 指定語言環境的月份簡稱 | Feb(英文),二月(中文) |
%tB | 指定語言環境的月份全稱 | February(英文),二月(中文) |
%tA | 指定語言環境的星期全稱 | Monday,星期一 |
%ta | 指定語言環境的星期簡稱 | Mon,星期一 |
%tc | 包括全部日期和時間資訊 | 星期四 八月 12 16:09:51 CST 2021 |
%tY | 四位年份 | 2021 |
%tj | 一年中的第幾天(1~366) | 065 |
%tm | 月份 | 08 |
%td | 一個月中的第幾天(1~31) | 23 |
%ty | 兩位年份 | 21 |
時間格式化
Date date = new Date(); String hour=String.format("%tH",date); String minute=String.format("%tM",date); String second=String.format("%tS",date); System.out.println(hour); System.out.println(minute); System.out.println(second);
常用時間格式轉換符
轉換符 | 說明 | 示例 |
---|---|---|
%tH | 2位數字的24時制的小時(00~23) | 16 |
%tI(大寫i) | 2位數字的12時制的小時(01~12) | 04 |
%tk | 2位數字的24時制的小時(0~23) | 5 |
%tl(小寫L) | 2位數字的12時制的小時(1~12) | 10 |
%tM | 2位數字的分鐘數(00~59) | 56 |
%tS | 2位數字的分鐘數(00~60) | 23 |
%tL | 3位數字的毫秒數(000~999) | 990 |
%tN | 9位數字的毫秒數(000000000~999999999) | 564892548 |
%tp | 指定語言環境下上午或下午的標記 | 下午,pm |
%tz | 相對於GMT RFC 82格式的數字時區偏移量 | +0800 |
%tZ | 時區縮寫形式的字串 | CST |
%ts | 1970-01-01 00:00:00至現在經過的秒數 | |
%t | 1970-01-01 00:00:00至現在經過的毫秒數 |
常見的日期與時間組合格式
轉換符 | 說明 | 示例 |
---|---|---|
%tF | "年-月-日" 4位年份 | 2021-08-12 |
%tD | "月/日/年" 2位年份 | 08/12/21 |
%tc | 全部日期和時間資訊 | 星期四 八月 12 16:39:43 CST 2021 |
%tr | "時:分:秒 PM(AM)" 12時制 | 04:41:43 下午 |
%tT | "時:分:秒" 24時制 | 16:41:43 |
%tR | "時:分" 24時制 | 16:41 |
常規型別格式化
String s1=String.format("%d",400/2);
String s2=String.format("%b",3>5);
String s3=String.format("%x",200);
System.out.println(s1);//200
System.out.println(s2);//false
System.out.println(s3);//c8
常規轉換符
轉換符 | 說明 | 示例 |
---|---|---|
%b、%B | 結果被格式化為布林型別 | true,false |
%h、%H | 結果被格式化為雜湊碼 ? | |
%s、%S | 結果被格式化為字串型別 | "abcd" |
%c、%C | 結果被格式化為字元型別 | 'a' |
%d | 結果被格式化為十進位制整數 | 40 |
%o | 結果被格式化為八進位制整數 | 11 |
%x、%X | 結果被格式化為十六進位制整數 | c8 |
%e | 結果被格式化為用電腦科學記數法表示的十進位制數 | |
%a | 結果被格式化為帶有效位數和指數的十六進位制浮點值 | |
%n | 結果為特定於平臺的行分隔符 | |
%% | 結果為字面值“%” | % |
正則表示式
//定義正則表示式,也就是E-mail地址格式
String regex="\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}";
//定義需要驗證的
String s1="aaa@";
String s2="[email protected]";
String s3="[email protected]";
//判斷是否匹配
if (s1.matches(regex)){
System.out.println(s1+"是一個合法的E-mail地址格式");
}
if (s2.matches(regex)){
System.out.println(s2+"是一個合法的E-mail地址格式");
}
if (s3.matches(regex)){
System.out.println(s3+"是一個合法的E-mail地址格式");
}
//輸出s1,s2都是合法的
/*合法E-mail地址格式為 [email protected]
"\\w"匹配任意字元
"+"表示字元可出現一次或多次
(\.\w{2,3})*表示像.com類的字串可以出現多次(包括0)
\.\w{2,3}表示最後的像.cn之類的結尾字串
*/
使用者設定密碼模擬
public static void main(String[] args) {
while (true){ //迴圈直至密碼輸入符合要求
Scanner sc = new Scanner(System.in);
System.out.println("請輸入密碼");
String str=sc.next();
//檢查密碼
if (check(str)){
System.out.println("此密碼符合要求");
break;//非常重要,停止執行
}else{
System.out.println("請按要求重新設定密碼");
}
}
}
public static boolean check(String str){
//判斷是否有其他符號,並判斷密碼長度是否正常
if (!str.matches("[a-zA-Z0-9]{8,20}"))
return false;
//記錄出現了幾種字元
int count=0;
if (str.matches(".*[a-z].*"))
count++;
if (str.matches(".*[A-Z].*"))
count++;
if (str.matches(".*[0-9].*"))
count++;
if (count<2){
System.out.println("密碼錯誤");
return false;
}else
return true;
}
正則表示式中的元字元
元字元 | 正則表示式中的寫法 | 意義 |
---|---|---|
. | . | 任意一個字元 |
\d | \\d | 0~9的任何一個數字 |
\D | \\D | 任何一個非數字字元 |
\s | \\s | 空白字元,如'\t','\n' |
\S | \\S | 飛空白字元 |
\w | \\w | 可用於識別符號的字元,不包括$ |
\W | \\W | 不可用於識別符號的字元 |
\p{Lower} | \\p{Lower} | 小寫字母a~z |
\p{Upper} | \\p{Upper} | 大寫字母A~Z |
\p{ASCII} | \\p{ASCII} | ASCII字元 |
\p{Alpha} | \\p{Alpha} | 字母字元 |
\p{Digit} | \\p{Digit} | 十進位制數字,0~9 |
\p{Alnum} | \\p{Alnum} | 數字或字母字元 |
\p{Punct} | \\p{Punct} | 標點符號 !"#$%&'()*+-,/><=?@[]^_`{|}~ |
\p{Graph} | \\p{Graph} | 可見字元 [\p{Alnum}\p{Punct}] |
\p{Print} | \\p{Print} | 可列印字元 [\p{Graph}\x20] |
\p{Blank} | \\p{Blank} | 空格或製表符 [\t] |
\p{Cntrl} | \\p{Cntrl} | 控制字元 [\x00-\x1F\x7F] |
還有其他格式
[^456] 表示除4,5,6之外的任意字元
[a-r] 代表a-r中的任何字母
[a-zA-Z] 代表任何一個字母
限定修飾符
限定修飾符 | 意義 | 例項 |
---|---|---|
? | 0次或1次 | A? |
* | 0次或多次 | A* |
+ | 1次或多次 | A+ |
{n} | 正好出現n次 | A{2} |
{n,} | 至少出現n次 | A{3,} |
{n,m} | 出現n~m次 | A{2,6} |