Java 日期时间
1、获取当前日期时间
import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// 初始化 Date 对象
Date date = new Date();
// 使用 toString() 函数显示日期时间
System.out.println(date.toString());
}
}
2、使用 SimpleDateFormat 格式化日期
import java.util.*;
import java.text.*;
public class DateDemo {
public static void main(String args[]) {
Date dNow = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
System.out.println("当前时间为: " + ft.format(dNow));
}
}
3、Java 休眠(sleep)
sleep()使当前线程进入停滞状态(阻塞当前线程),让出CPU的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行的机会。
import java.util.*;
public class SleepDemo {
public static void main(String args[]) {
try {
System.out.println(new Date( ) + "\n");
Thread.sleep(1000*3); // 休眠3秒
System.out.println(new Date( ) + "\n");
} catch (Exception e) {
System.out.println("Got an exception!");
}
}
}
正则表达式
正则表达式,⼜称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的⼀个概念。正则表达式通常被⽤来检索、替换那些符合某个模式(规则)的⽂本。在众多语⾔中都可以⽀持 正则表达式,如Perl、PHP、Java、Python、Ruby等。当然在Java中也可以通过处理字符串的⽅式达到检索,替换 ⽂本字符串的⽬的,但是有了正则表达式写代码更加简洁,通常两三⾏代码就可以达到⽬的,当然这也是建⽴在熟 悉正则表达式的基础之上的。主要是对字符串的一个处理
正则表达式的规则
1. 任意⼀个字符表示匹配任意对应的字符,如a匹配a,7匹配7,-匹配-。
2. []代表匹配中括号中其中任⼀个字符,如[abc]匹配a或b或c。
3. -在中括号⾥⾯和外⾯代表含义不同,如在外时,就匹配-,如果在中括号内[a-z]表示匹配26个⼩写字⺟中的任⼀
个;[a-zA-Z]匹配⼤⼩写共52个字⺟中任⼀个;[0-9]匹配⼗个数字中任⼀个。
4. ^在中括号⾥⾯和外⾯含义不同,如在外时,就表示开头,如^7[0-9]表示匹配开头是7的,且第⼆位是任⼀数字
的字符串;如果在中括号⾥⾯,表示除了这个字符之外的任意字符(包括数字,特殊字符),如[^abc]表示匹配出去
abc之外的其他任⼀字符。
5. .表示匹配任意的字符。
6. \d表示数字。
7. \D表示⾮数字。
8. \s表示由空字符组成,[ \t\n\r\x\f]。
9. \S表示由⾮空字符组成,[^\s]。
10. \w表示字⺟、数字、下划线,[a-zA-Z0-9_]。
11. \W表示不是由字⺟、数字、下划线组成。
12. ?: 表示出现0次或1次。
13. +表示出现1次或多次。
14. *表示出现0次、1次或多次。
15. {n}表示出现n次。
16. {n,m}表示出现n~m次。
17. {n,}表示出现n次或n次以上。
18. XY表示X后⾯跟着Y,这⾥X和Y分别是正则表达式的⼀部分。
19. X|Y表示X或Y,⽐如"food|f"匹配的是foo(d或f),⽽"(food)|f"匹配的是food或f。
20. (X)⼦表达式,将X看做是⼀个整体。
1、匹配
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class regex_demo {
public static void main(String[] args) {
//实现方法1,匹配一个数字
//需要匹配的字符
String s="8";
//正则表达式
String regex="[0-9]";
//返回匹配的结果,匹配成功就返回true,失败就返回false,此次匹配返回true
boolean b = s.matches(regex);
System.out.println(b);
System.out.println("--------");
//实现⽅式2, 匹配3个到5个字⺟,⼤⼩写不限,包括3和5个
//要匹配的字符
String s2 = "hello";
//正则表达式
String regex2="[a-zA-Z]{3,5}";
boolean b1 = s2.matches(regex2);
System.out.println(b1);
System.out.println("--------");
/**
* 实现⽅式3(此种实现⽅式最快)
* 匹配11位的电话号码,匹配规则:
* 第⼀个数字是1,第⼆个数字是2,3,7,8中任⼀个,后⾯9位数字中不包含4
*/
//要匹配的字符
String s3 = "13656231253";
//正则表达式
String regex3="1[2378][0-35-9]{9}";
//将给定的正则表达式编译为模式。
// 如果匹配需求较多,且需⽤同相同的regex去匹配,就可将这句写到静态模块⾥⾯,⽤的时候直接使⽤实例p
Pattern p = Pattern.compile(regex3);
//创建⼀个匹配器,匹配给定的输⼊与此模式
Matcher m = p.matcher(s3);
//尝试将整个区域与模式进⾏匹配。
boolean f = m.matches();
//输出结果
System.out.println(f);
}
}
2、替换
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class regex_demo {
public static void main(String[] args) {
/**
* 替换
* 用正则表达式
* 将字符串中英⽂字⺟替换为&符号,输出12&6&985&65
* 将字符串中单个数字或者连续的数字替换为空格,输出 aBCcv
*/
//要匹配的字符
String str = "12a6B985Ccv65";
//正则表达式
String r1="[a-zA-z]+";
//用replaceAll方法来完成替换
System.out.println(str.replaceAll(r1,"&"));
String r2="\\d+";
System.out.println(str.replaceAll(r2, ""));
}
}
3、切割
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class regex_demo {
public static void main(String[] args) {
/**
* 切割,根据⼤写字⺟切割字符串
* 输出:one tow three four five
*/
//需要的字符串
String s4="oneTtwoTthreeDfourJfive";
//正则表达式
String v="[A-Z]";
//放入数组中
String[] split = s4.split(v);
//遍历输出
for (String ss: split) {
System.out.println(ss);
}
}
}