正则表达式
- 正则表达式可以用一些规定的字符来制定规则,并用来校验数据格式的合法性。
- 字符类(默认匹配一个字符)
表达式 | 说明 |
---|
[abc] | 只能是a,b或c |
[^abc] | 除了a,b,c之外的任何字符 |
[a-zA-Z] | a到z A到Z,包括(范围) |
[a-d[m-p]] | a到d,或m通过p([a-dm-p]联合) |
[a-z&&[def]] | d,e或f(交集) |
[a-z&&[^bc]] | a到z,除了b和c([ad-z]减法) |
[a-z&&[^m-p]] | a到z,除了m到p([a-lq-z]减法) |
表达式 | 说明 |
---|
. | 任何字符 |
\d | 一个数字:[0-9] |
\D | 非数字:[^0-9] |
\s | 一个空白字符:[\t\n\x0B\f\r] |
\S | 非空白字符:[^\s] |
\w | [a-zA-Z_0-9]英文、数字、下划线 |
\W | [^\w]一个非单词字符 |
表达式 | 说明 |
---|
X? | 出现一次或零次 |
X* | 出现零次或多次 |
X+ | 出现一次或多次 |
X{n} | 出现n次 |
X{n,} | 出现至少n次 |
X{n,m} | 出现至少n次,但不超过m次 |
- 字符串对象提供了匹配正则表达式规则的API
public boolean matches(String regex):判断是否匹配正则表达式,匹配返回true,不匹配返回false。
- 正则表达式在字符串方法中的使用:
方法名 | 说明 |
---|
public String replaceAll(String regex,String newStr) | 按照正则表达式匹配的内容进行替换 |
public String[] split(String regex) | 按照正则表达式匹配的内容进行分割字符串,返回一个字符串数组 |
Arrays类
- 数组操作工具类,专门用于操作数组元素的。
- Arrays类的常用API:
方法名 | 说明 |
---|
public static String toString(类型[] a) | 获取数组所有的元素内容 |
public static void sort(类型[] a) | 对数组进行默认升序排序 |
public static <T> void sort(类型[] a, Comparator<? super T> c) | 使用比较器对象自定义排序 |
public static int binarySearch(int[] a,int key) | 二分搜索数组中的数据,存在返回索引,不存在返回-1 |
Lambda表达式
- Lambda表达式是JDK8开始后的一种新语法形式。
- 作用:简化匿名内部类的代码写法。
- Lambda表达式的简化格式:
(匿名内部类被重写方法的形参列表) -> {
被重写方法的方法体代码。
}
注意:Lambda表达式只能简化函数式接口的匿名内部类的写法形式。
- 什么是函数式接口?
- 首先必须是接口、其次接口中有且仅有一个抽象方法的形式。
- 通常我们会在接口上加上一个@FunctionalInterface注解,标记该接口必须是满足函数式接口。
- Lambda表达式的省略写法(进一步在Lambda表达式的基础上继续简化)
- 参数类型可以省略不写。
- 如果只有一个参数,参数类型可以省略,同时()也可以省略。
- 如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写,同时要省略分号!
- 如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写。此时,如果这行代码是return语句,必须省略return不写,同时也必须省略";"不写。