一串字符就是字符串: char[],String,
StringBuilder
1 字符串"字面量"都是String类型实例
Stirng 内部就是一个char[].
2 String API 有一个实现原则: 对象内容永远不变
也就是说: String对象永远不变.
3 String 字面量(直接量),如果相同,会替换为同
一个String对象的引用,常量连接的结果也被优化
为一个字符串.
String s = new String("abc");
4 String 的比较,equals,hashCode()
5 String API (字符串的常用方法)
这些方法如果返回String 一定是一个新String对象
toString() 除外.
字符串中的字符有序号,从0开始.
API 方法:
charAt()
length()
trim()
indexOf()
lastIndexOf()
endsWith()
startsWith()
substring(int start,int end)
substring(int start)
正则表达式: 负责的字符串匹配处理规则,应用广泛.
学习建议: 1 要能够读懂"正则表达式"
2 能够写出简单的"正则表达式"
3 不要过多的分配学习时间!
可以应用于: java grep vi
1 字符集: [1234] 表示 1,2,3,4 之一
[^12] 表示除了 1,2
[1-5] 表示 1,4,5
[a-f] 表示 a-f 之间的
[0-9a-fA-F] 表示:一个16进制字符
预定义字符集:
\d : [0-9]
. : 任意字符
\w: 单词字符 [0-9a-zA-Z_]
\s: 匹配空白:
2 {m,n} 数词
{n}
{m,n}
? : {0,1}
+ : {1,n}
* : {0,n}
3 ^ 开头
$ 结尾
邮政编码: ^[0-9][0-9][0-9][0-9][0-9][0-9]$
^[0-9]{6}$
^\d{6}$
用户名规则: ^\w{8,10}$
电话号: +86 13912345678
^(\+86)?\s?\d{11}$
身份证号码: ^\d{15}(\d{2}[0-9xX])?$
一个点的坐标: ^\d+(,\s*|\s+)\d+$
3,2
3,2
3 2
3 2
String 对正则表达式的支持
.matches() 匹配正则表达式
.split() 切分字符串为字符串数组
.replaceAll()
正则的集体案例:
package day12; public class RegDemo { public static void main(String[] args) { String email = "liu.c-ang.song@gmail.com.cn"; //email: ^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)*$ String reg = "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)*$"; boolean pass = email.matches(reg); System.out.println(pass);//true String date = "2011年1月3日"; date = date.replace("日","") .replaceAll("[年月]","-"); System.out.println(date);//"2011-1-3" } }