importjava.awt.Toolkit;importjava.awt.datatransfer.Clipboard;importjava.awt.datatransfer.DataFlavor;importjava.awt.datatransfer.StringSelection;importjava.awt.datatransfer.Transferable;importjava.util.ArrayList;importjava.util.regex.Matcher;importjava.util.regex.Pattern;public classTestMain
{/*** arivate1
* brivate1
* crivate1
* drivate
* erivate
* go go
* kitty kitty*/
public static void main(String[] args) throwsException
{
Clipboard systemClipboard=Toolkit.getDefaultToolkit().getSystemClipboard();
String clipboardText=getClipboardText(systemClipboard);
Pattern rule= Pattern.compile("[1-9]+\\.[0-9]+");
Matcher matcher=rule.matcher(clipboardText);//System.out.println(matcher.matches());//System.out.println(matcher.groupCount());
ArrayList strs = new ArrayList();
Double total= 0.0;while(matcher.find()) {
strs.add(matcher.group(0));
}
System.out.println("加班时数: ");for(String s : strs){
Double i=Double.parseDouble(s);
System.out.print(i+ ", ");
total+=i;
}
System.out.println();
System.out.println("加班总时数: " +total);
}public static voidtest(){
getStrings();//用正则表达式获取指定字符串内容中的指定内容
System.out.println("********************");
replace();//用正则表达式替换字符串内容
System.out.println("********************");
strSplit();//使用正则表达式切割字符串
System.out.println("********************");
strMatch();//字符串匹配
}/** Java中使用java.awt.datatransfer.Clipboard类来描述剪切板,并把剪切板分为两种类型:本地和系统,
* 本地剪切板使用 Clipborad cp = new Clipboard("clip1"); 来构造;
* 系统剪切板通过 Clipboard sysc =
* Toolkit.getDefaultToolkit().getSystemClipboard();
* 获取,下面我们给出几个常用的方法用于读写剪切板中的文本数据以及图像数据 1. 从指定的剪切板中获取文本内容*/
protected static String getClipboardText(Clipboard clip) throwsException
{//获取剪切板中的内容
Transferable clipT = clip.getContents(null);if (clipT != null)
{//检查内容是否是文本类型
if (clipT.isDataFlavorSupported(DataFlavor.stringFlavor)) return(String) clipT.getTransferData(DataFlavor.stringFlavor);
}return null;
}//2. 往剪切板写文本数据
protected static voidsetClipboardText(Clipboard clip, String writeMe)
{
Transferable tText= newStringSelection(writeMe);
clip.setContents(tText,null);
}/*** 字符串匹配*/
private static voidstrMatch() {
String phone= "13539770000";//检查phone是否是合格的手机号(标准:1开头,第二位为3,5,8,后9位为任意数字)
System.out.println(phone + ":" + phone.matches("1[358][0-9]{9,9}")); //true
String str= "abcd12345efghijklmn";//检查str中间是否包含12345
System.out.println(str + ":" + str.matches("\\w+12345\\w+")); //true
System.out.println(str + ":" + str.matches("\\w+123456\\w+")); //false
}/*** 使用正则表达式切割字符串*/
private static voidstrSplit() {
String str= "asfasf.sdfsaf.sdfsdfas.asdfasfdasfd.wrqwrwqer.asfsafasf.safgfdgdsg";
String[] strs= str.split("\\.");for(String s : strs){
System.out.println(s);
}
}/*** 用正则表达式获取指定字符串内容中的指定内容*/
private static voidgetStrings() {
String str= "rrwerqq84461376qqasfdasdfrrwerqq84461377qqasfdasdaa654645aafrrwerqq84461378qqasfdaa654646aaasdfrrwerqq84461379qqasfdasdfrrwerqq84461376qqasfdasdf";
Pattern p= Pattern.compile("qq(.*?)qq");
Matcher m=p.matcher(str);
ArrayList strs = new ArrayList();while(m.find()) {
strs.add(m.group(1));
}for(String s : strs){
System.out.println(s);
}
}/*** 用正则表达式替换字符串内容*/
private static voidreplace() {
String str= "asfas5fsaf5s4fs6af.sdaf.asf.wqre.qwr.fdsf.asf.asf.asf";//将字符串中的.替换成_,因为.是特殊字符,所以要用\.表达,又因为\是特殊字符,所以要用\\.来表达.
str = str.replaceAll("\\.", "_");
System.out.println(str);
}
}