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那章再详细解释。

 

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