1. 正则表达式
1.1 普通字符
字符 |
描述 |
示例 |
[abc] |
匹配 [...] 中所有字符 |
[hlo] 匹配字符串 "hello world" 中所有的 h l o 字母 |
[^ABC] |
匹配除了 [...] 中所有字符 |
[hlo] 匹配字符串 "hello world" 中除了 h l o 的所有字母 |
[^a-z] |
匹配除了 [...] 中所有字符 |
[hlo] 匹配字符串 "hello world" 中除了 a 到 z 的所有字母 |
[A-Z] |
[A-Z] 表示一个区间,匹配所有的大写字母 |
[A-Z] 匹配字符串 "Hello world" 结果为 H |
1.2 特殊字符
字符 |
描述 |
示例 |
. |
匹配任意单个字符,除了换行符 |
a.b 、1.2 |
* |
匹配前一个字符零次或多次 |
go*gle 、colou*r |
+ |
匹配前一个字符一次或多次 |
go+gle 、colou+r |
? |
匹配前一个字符零次或一次 |
colou?r 、col(o)?r |
| |
表示"或"的意思,用于匹配多个选项中的一个 |
`apple |
[] |
用于定义字符类,匹配方括号内的任意一个字符 |
[aeiou] 、[0-9] |
() |
用于分组,可以改变默认的优先级和应用限定符 |
(go)+ 、`(abc |
$ |
匹配输入字符串的结尾位置,如果设置了 RepExp 对象的 Multiline 属性,则 $ 也匹配'\n'或'\r' |
... |
{ |
标记限定表达式的开始 |
... |
| |
指明两项直接的一个选择 |
... |
1.3 非打印字符
字符 |
描述 |
示例 |
\n |
匹配换行符 |
Hello\nWorld |
\r |
匹配回车符 |
Hello\rWorld |
\t |
匹配制表符 |
Hello\tWorld |
\v |
匹配垂直制表符 |
Hello\vWorld |
\s |
匹配任意空白字符,包括空格、制表符、换页符等 |
Hello World |
\S |
匹配任意非空白字符,不包括换行 |
我暂时不知道 |
\d |
匹配任意数字字符,相当于 [0-9] |
12345 、9am |
\w |
匹配任意字母、数字或下划线字符,相当于 [a-zA-Z0-9_] |
hello_world_123 |
1.4 限定符
字符 |
描述 |
示例 |
* |
匹配前一个字符零次或多次 |
go*gle 、colou*r |
+ |
匹配前一个字符一次或多次 |
go+gle 、colou+r |
? |
匹配前一个字符零次或一次 |
colou?r 、col(o)?r |
{n} |
匹配前一个字符恰好出现 n 次 |
go{2}gle 、colou{3}r |
{n,} |
匹配前一个字符至少出现 n 次 |
go{2,}gle 、colou{3,}r |
{n,m} |
匹配前一个字符出现 n 到 m 次 |
go{2,5}gle 、colou{3,7}r |
1.5 定位符
字符 |
描述 |
示例 |
^ |
匹配字符串的开头 |
^Hello 、^[A-Z] |
$ |
匹配字符串的结尾 |
World$ 、[0-9]$ |
\b |
匹配单词的边界 |
\btest\b 、\bword\b |
\B |
匹配非单词边界 |
\Btest\B 、\Bword\B |
2. 日期时间
2.1 Date 类方法
Date类位于 java.util 包中,用于表示特定的时间点。
方法 |
描述 |
getTime() |
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。 |
toString() |
将日期对象转换为字符串形式。 |
compareTo(Date anotherDate) |
比较两个日期的顺序。返回值为 0 表示相等,大于 0 表示当前日期在参数日期之后,小于 0 表示当前日期在参数日期之前。 |
equals(Object obj) |
检查该日期对象是否等于另一个日期对象。 |
before(Date when) |
检查当前日期是否在指定日期之前。 |
after(Date when) |
检查当前日期是否在指定日期之后。 |
setTime(long time) |
设置日期对象的时间值。 |
例题1
java
复制代码
public class DateDemo01 {
public static void main(String[] args) {
// 创建一个表示当前时间的 Date 对象
Date date = new Date();
System.out.println(date); // Thu Aug 24 22:35:10 CST 2023
// 获取 Date 对象的时间(毫秒数)
long timeInMillis = date.getTime();
System.out.println(timeInMillis); // 1692887710157
// 创建一个指定时间的 Date 对象
Date specifiedDate = new Date(1640886000000L);
System.out.println(specifiedDate); // Fri Dec 31 01:40:00 CST 2021
// 比较两个 Date 对象的时间
boolean isBefore = date.before(specifiedDate);
boolean isEquals = date.equals(specifiedDate);
boolean isAfter = date.after(specifiedDate);
System.out.println(isBefore); // false
System.out.println(isEquals); // false
System.out.println(isAfter); // true
}
}
2.2 Calendar 类方法
Calender 类是 java 中用于处理日期和时间的类,位于 java.util 包中。它提供了一种比 Date 类更灵活和功能更强大的日期和时间操作方式。
方法 |
描述 |
getTime() |
返回一个表示此 Calendar 时间值(从历元到现在毫秒偏移量)的 Date 对象。 |
get(int field) |
返回给定日历字段的值。 |
set(int field, int value) |
设置给定日历字段的值。 |
add(int field, int amount) |
根据日历的规则,将指定的时间量添加到给定日历字段。 |
roll(int field, int amount) |
根据日历的规则,将给定的时间量添加到给定日历字段,但不更改较大的字段值。 |
getActualMaximum(int field) |
返回指定日历字段的最大值。 |
getActualMinimum(int field) |
返回指定日历字段的最小值。 |
getDisplayName(int field, int style, Locale locale) |
返回给定字段值的本地化表示名称。 |
getFirstDayOfWeek() |
返回一个代表每周的第一天的值。 |
setFirstDayOfWeek(int value) |
设置一星期中的第一天是哪一天。 |
getMinimum(int field) |
返回给定日历字段的最小值。 |
getMaximum(int field) |
返回给定日历字段的最大值。 |
例题2
java
复制代码
import java.util.Calendar;
import java.util.Date;
public class CalenderDemo01 {
public static void main(String[] args) {
// 获取当前时间和日期的 Calender 对象
Calendar calendar = Calendar.getInstance();
System.out.println(calendar); // java.util.GregorianCalendar[time=1692889224235,areFieldsSet=true,···]
// 设置日期为指定的年份、月份和日 1970年2月1日
calendar.set(1970, 1, 1);
System.out.println(calendar); // java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllField···]
// 获取年份
int year = calendar.get(Calendar.YEAR);
System.out.println(year); // 1970
// 获取月份(月份从 0 开始计数)
int month = calendar.get(Calendar.MONTH) + 1;
System.out.println(month); // 2
// 获取当前月份中的第几天
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(dayOfMonth); // 1
// 月份加 1
calendar.add(Calendar.MONTH, 1);
// 输出修改过后的月份
System.out.println(calendar.getTime()); // Sun Mar 01 23:00:24 CST 1970
// 将 Calender 转换为 Date 对象
Date date = calendar.getTime();
System.out.println(date); // Sun Mar 01 23:00:24 CST 1970
}
}
Calender 和 Date 相互转换
java
复制代码
import java.util.Calendar;
import java.util.Date;
public class CalenderDeom02 {
// 创建一个 Calender 对象
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
// 设置日期为指定的日期
calendar.set(1970, 0, 1);
// 获取当前的日期和时间
Date date = calendar.getTime();
System.out.println(date); // Thu Jan 01 23:25:45 CST 1970
// 将 Calender 转换为 Date
Date convertedDate = calendar.getTime();
System.out.println(convertedDate); // Thu Jan 01 23:25:45 CST 1970
// 创建一个新的 Date 对象
Date newDate = new Date(70, 1, 1);
// 将 Date 转换为 Calender
Calendar convertedCalender = Calendar.getInstance();
convertedCalender.setTime(newDate);
System.out.println(convertedCalender); // java.util.GregorianCalendar[time=2649600000,areFieldsSet=true,areAllFieldsSet=true...
}
}
请注意,尽管 Date 类和 Calendar 类仍然存在于 Java 中,但在 Java 8 及更高版本中,推荐使用新版的日期时间类(如 LocalDate、LocalTime、LocalDateTime)来替代旧版的 Date 和 Calendar 类,因为新版的类更加简洁、易用,并且线程安全。