一.String常用方法
- 长度 length()
- 拼接 str.concat(str2)
- 格式化
//方式一
System.out.printf("大家好,我的名字叫:%s,我今年:%d岁了,我的存款有:%f %n","曹操",36,999.99);
//方式二
String s = String.format("大家好,我的名字叫:%s,我今年:%d岁了,我的存款有:%f","曹操",36,999.99);
System.out.println(s);
- charAt(index)返回指定索引处的字符
- indexOf(str)返回指定字符串在此字符串中第一次出现处的索引
- compareTo(str2)比较两个字符串
- equals()和equalsIgnoreCase()
- getBytes()使用默认字符集将字符串变为字节数组,IO流中会用到
- toCharArray() 字符串转换为字符数组
- 截取:subString()
- 转换成大小写toLowerCase() toUpperCase()
- 截取前后空白 trim()
- 替换:replace()
- 分割:split()
- 正则匹配 matches(String reg) 返回boolean
二.正则表达式
1.概念
正则表达式,又称规则表达式。(英语:Regular Expression,常简写为regex)。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。支持正则表达式的有:PHP、Java、Python、JavaScript等。有了正则表达式写代码更加简洁,通常两三行代码就可以达到目的。
2.规则
1. 任意一个字符表示匹配任意对应的字符,如a匹配a,7匹配7,-匹配-。
2. []代表匹配中括号中其中任一个字符,如[abc]匹配a或b或c。
3. -在中括号里面和外面代表含义不同,如在外时,就匹配-,如果在中括号内[a-b]表示匹配26个小写字母中的任一个;[a-zA-Z]匹配大小写共52个字母中任一个;[0-9]匹配十个数字中任一个。
4. ^在中括号里面和外面含义不同,如在外时,就表示开头,如^7[0-9]表示匹配开头是7的,且第二位是任一数字的字符串;如果在中括号里面,表示除了这个字符之外的任意字符(包括数字,特殊字符),如[^abc]表示匹配出去abc之外的其他任一字符。
5. .表示匹配任意的字符。
6. \d表示数字。
7. \D表示非数字。
8. \w表示字母、数字、下划线,[a-zA-Z0-9_]。
9. \W表示不是由字母、数字、下划线组成。
10. [\u4e00-\u9fa5]匹配汉字
11. ?: 表示出现0次或1次。
12. +表示出现1次或多次。
13. *表示出现0次、1次或多次。
14. {n}表示出现n次。
15. {n,m}表示出现n~m次。
16. {n,}表示出现n次或n次以上。
3.用法
在java中调用正则表达式的类是java.util.regex.Matcher和java.util.regex.Pattern
- 代码
//要匹配的字符
String str = "8";
//正则表达式
String regex = "[0-9]";
// 方式一
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
System.out.println(m.matches());
//方式二
System.out.println(Pattern.matches(regex, str));
//方式三
System.out.println(str.matches(regex));
- 练习
@Test
public void test4(){
//qq邮箱:6-11数字@qq.com 过滤: 163.com .cn
String s="1071461302@qq.com";
System.out.println(s.matches("\\d{6,11}@qq\\.com"));
System.out.println(s.matches("\\d{6,11}@[a-z]{2}\\.[a-z]{3}"));
}
- 扩展:断言,预测,排除
//某网站要求注册的账号只能是:字母和数字,不能都是字母,不能都是数字,且要求字母开头,长度在6-12之间,
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//断言 ,预测 (?!正则 ) 排除 正则匹配的情况
String s="";
while (!s.matches("^[a-zA-Z](?![a-zA-Z]{5,11}$)[a-zA-Z0-9]{5,11}")){
System.out.println("请输入注册账号:");
s = sc.next();
}
System.out.println("注册成功!");
}