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那章再詳細解釋。