1503-3-吴天明 总结《2016年-10月-05日》【连续 5天总结】
关键词:JAVA正则表达式、JAVA方法
内容
A. 概括 头很晕,感觉java比C++难多了,看了正则表达式简直一脸懵逼,但还是耐着性子看完了也编了个小程序。
(a)JAVA正则表达式 80%
(b)JAVA方法 100%
B.具体内容
本以为学过一门C++再学java会容易点结果还是那么难,正则表达式的各种符号和意义只能日积月累慢慢铭记在心底了。感觉java就是各种各样的类,各种各样的类方法(起码是现在这么觉得),相信随着学习的深入,对Java的理解会越来越深入。不只是简单的类方法更是如何重写类方法从而做到多态。
C.明日计划(需要量化的目标)
(a)Java 流(Stream)、文件(File)和IO
(b)Java Scanner 类
(c)Java 异常处理
D.今日代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StartEnd {
private static String SIMPLE
="\\b(T|t)he fat cat\\b";
private static String INPUT
="The fat cat is eating a fish in the dirty coat。"
+ "And the fat cat looks really cute!";
private static String REPLACE1="A naughty dog";
private static String REPLACE2="-";
public static void main(String[] args) {
//初始化以SIMPLE为例的PATTERN类对象
Pattern p=Pattern.compile(SIMPLE);
//初始化以p与INPUT比较的match类对象
Matcher m=p.matcher(INPUT);
/*
* lookingAt()方法要求部分相似
* matches()方法要求全部相同
*/
if(m.lookingAt()){System.out.println("两个字符串有部分相似或全部相似!");}
if(m.matches()){System.out.println("两个字符串全部相似!");}
StringBuffer sb=new StringBuffer();
int count=0;
int i=0;
//用i标记上一次匹配的终止位置,防止死循环
while(m.find(i)) {
count++;
System.out.println("匹配次数:"+count);
/*start()方法返回匹配的起始位置
* end()方法返回匹配的终止位置
*/
System.out.println("起始位置:"+m.start());
i=m.end();
System.out.println("终止位置:"+m.end());
}
i=0;
while(m.find()){
i++;
m.appendReplacement(sb, REPLACE2);
System.out.println("appendReplacement()"+i+":"+sb.toString());
}
m.appendTail(sb);
System.out.println("appendTail():"+sb.toString());
//如果先调用replaceFirst()或replaceall()方法则原字符串改变找不到配对
/*
if(m.find()){
//replaceFirst()只替换第一个匹配的字段
//replaceAll()替换所有匹配字段
INPUT=m.replaceFirst(REPLACE1);
System.out.println(INPUT);
INPUT=m.replaceAll(REPLACE1);
System.out.println(INPUT);
}
*/
}
}
运行结果:
两个字符串有部分相似或全部相似!
匹配次数:1
起始位置:0
终止位置:11
匹配次数:2
起始位置:51
终止位置:62
appendReplacement()1:-
appendReplacement()2:- is eating a fish in the dirty coat。And -
appendTail():- is eating a fish in the dirty coat。And - looks really cute!