13.字符串

1.String對象不可變
string一旦創建則不可改變,任何對String的修改,實際是建立了一個全新的對象。

2.格式化輸出
 Formatter類用法
 Formatter f = new Formatter(System.out);
 f.format("%-5.7s","hello");//左對齊最少顯示5個字符,不足用空格補齊,最多顯示7個字符。
f.format("%5d","hello");    //右對齊,顯示五位數字,如果5.5d則會拋異常
f.format("%-5.7f","hello"); //左對齊,顯示五位數字,多則四捨五入,少則補零

3.Formatter轉換
d 整數型    c unicode字符  b Boolean值 
s String    f 浮點         e 浮點(科學計數)
x 整數(十六進制) h 散列碼(十六進制) % 字符%

4.String.format
接受Formatter.format()一樣的參數,返回一個串。

5.正則表達式
斜槓
\\\\ 前兩個是正則斜槓 ,斜槓本身要轉義,也得兩個
\\d 表示一個數字,表示一個正則斜槓
\t 間隔(\u0009)
\n 換行(\u000A)
\r 回車(\u000D)
\d 數字[0-9]
\D 非數字[^0-9]
\s 空白字符[\t\n\f\r\x0B]
\S 非空白字符[^\t\n\r\f\x0B]
\w 單獨字符[a-zA-Z0-9]
\W 非單獨字符[^a-zA-Z0-9]
\f 換頁符
\e Escape
\b 一個單詞的邊界
\B 一個非單詞的邊界
\G 前一個匹配的結束

^限制開頭
^Hello 以Hello爲開頭字符

$限制結尾
Hello$ 以Hello爲結尾字符

. 除\n以外任意一個單獨字符
java.. java後除換行外任意兩個字符

限制條件[]
[a-z]     條件限制在小寫a to z範圍中一個字符
[A-Z]     條件限制在大寫A to Z範圍中一個字符
[a-zA-Z] 條件限制在小寫a to z或大寫A to Z範圍中一個字符
[0-9]     條件限制在小寫0 to 9範圍中一個字符
[0-9a-z] 條件限制在小寫0 to 9或a to z範圍中一個字符
[0-9[a-z]] 條件限制在小寫0 to 9或a to z範圍中一個字符(交集)

[]加入^後
[^a-z]     條件限制在非小寫a to z範圍中一個字符
[^A-Z]     條件限制在非大寫A to Z範圍中一個字符
[^a-zA-Z] 條件限制在非小寫a to z或大寫A to Z範圍中一個字符
[^0-9]     條件限制在非小寫0 to 9範圍中一個字符
[^0-9a-z] 條件限制在非小寫0 to 9或a to z範圍中一個字符
[^0-9[a-z]] 條件限制在非小寫0 to 9或a to z範圍中一個字符(交集)

*特定字符出現0次以上
J*     0個以上J
.*     0個以上任意字符
J.*D     J與D之間0個以上任意字符

+特定字符出現1次以上
J+     1個以上J
.+     1個以上任意字符
J.+D     J與D之間1個以上任意字符

?特定字符出現0或一次
JA?     J或者JA出現

{a}特定字符出現指定次數
J{2}     JJ
{a,}特定字符出現a次以上
{a,b} 特定字符a個以上,b個以下

或|
A|B

()一個組合類型

量詞

貪婪量詞
發現儘可能多的匹配,先匹配整個串,如果匹配不上,去掉最後一個字符。
匹配到最大就停止

惰性量詞?
和貪婪相反,先看第一個字符是不是匹配,然後在讀入下一個字符。
發現儘可能少的匹配。但是保存所有匹配。

佔有型+
只嘗試匹配整個串,如果不產生匹配,不做進一步嘗試。

Pattern和Matcher使用
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text1); //匹配第一個串
matcher.reset(text2); //匹配第二個串
這有個組(Groups)的概念
A(B(C))D

String.spilt(String input);
String.spilt(String input,int n);//按分隔符input分成n份

以上匹配都是靜態的字符串
還有從文件和輸入讀一行字符串,進行匹配。
輸入輸出到IO那章再詳細解釋。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章