正则表达式:(Pattern)
概述:符合某种规则的字符串。
作用:实际开发中,一般使用正则来做校验的。
校验QQ:
1、不是是0开头的,
2、必须是5-15位的数字字符
[1-9]\\d{4,14}
String类中的方法:
public boolean matches(String regex); //判断字符串是否与给定的正则匹配。
分类:
字符类:
[abc] : a,b,c三者中的任意一个
[^abc] : 只要不是a,b,c三者中的任何一个就可以
[a-zA-Z]:所有的英文字母
[0-9] : 所有的数字
预定义字符类:
. 任意字符
\d 所有的数字
\w 单词字符(所有的英文字母,数字,下划线) 相当于[a-zA-Z0-9_]
\\ 表示一个\
\\. 表示字符.
数量词:
X? :一次或者一次也没余
X* :零次或者多次 (可以是零次,也可以是1次)
X+ :一次或多次 (至少一次)
X{n} : 恰好n次。
X{n,} : 至少n次
X{n,m} : 至少n次,至多不超过m次(包括m次)
功能:
分割功能:
public String[] split(String regex)
//张三 lisi 王五
案例:我有如下一个字符串:”91 27 46 38 50”,请写代码实现最终输出结果是:”27 38 46 50 91”
思路:
1、切割字符串,获取到一个新的字符串数组。
2、遍历字符串数组,把每一个遍历到的元素 转换成 int,并将结果存到int数组中。
3、排序。(冒泡,选择,sort())
4、把排序后的int数组转成字符串。(用StringBuffer,StringBuilder)
替换功能:
public String replaceAll(String regex, String replacement);
用给定的字符串replacement 去替换,字符串(谁调用就是谁)中符合正则规则的字符串(regex)。
分组:
怎么分组?
通过从左至右计算其开括号的形式类分组,并且对开括号进行编号(编号是从1开始)。
示例:
((A)(B(C)))
组零永远代表整个表达式。
第一组:(A)(B(C))
第二组:A
第三组:B(C)
第四组:C
叠词:
相同的字符连续出现两次或以上,就是叠词。
叠词的切割规则:
(.)\\1+
叠词切割,保留一个:
replaceAll("(.)\\1+","$1");
切割路径:
示例:
D:\\教案\\14_第十四天\\day14\\video
正则表达式:
\\\\
思考:请按照叠词切割: “sdqqfgkkkhjppppkl“ (1分钟)
Patter(模式)和Matcher(匹配器)
//public boolean matches(String regex); //判断字符串是否与给定的正则匹配。
// "akskjflsjdf".matches("正则");
典型的用法:
Patter p = Patter.compile("正则"); //获取到正则表达式
Matcher m = p.matcher("akskjflsjdf"); //获取匹配器
boolean b = m.matches();
"我的手机号是13161290281,我以前的手机号是1314561232,在之前是12345678920"
Matcher类中:
public boolean find();
public String group();
//思考:如何把一个字符串中的手机号码获取出来
Patter p = Patter.compile("正则"); //获取到正则表达式
Matcher m = p.matcher("字符串-"); //获取匹配器
while(m.find()){
String phone = m.group();
}
其他常用API:
Math类:
abs(); 绝对值
ceil(); 天花板数
floor(); 地板数
max(); 求最大值
random(); 生成一个0.0-1.0之间的随机数,包左不包右
pow(); a^b
sqrt(); 开平方
round(); 四舍五入
请用代码模拟实现”四舍五入“,思路怎么做?
//12.3 12.5 12.8
思路:+0.5,然后取地板数。
Random();
构造:
public Random();
public Random(long seed); //如果种子一样,则生成的随机数的顺序都是一样的。
企业中的应用:
批量生成账号和密码。
成员方法:
public int nextInt(); 生成一个int范围内的随机数。
public int nextInt(int n); 生成一个0-n之间的随机数,包左不包右
怎么生成1-100之间的随机数?
r.nextInt(100) + 1;
System类:
1秒 = 1000毫秒
概述:里边记录的是一些有用的属性和方法,不能被实例化。
public static void gc();
public static void exit(int status); //非0的状态码表示异常终止,我们一般传0.
public static long currentTimeMillis(); 获取当前系统时间的毫秒值
//并发修改异常:ConcurrentModificationException 并发修改异常。
public static void arraycopy(Object obj, int objPos, Object dest,int destPos, int length); 拷贝数组
BigInteger
作用:可以让超出Integer范围的数据进行运算。
构造:
public BigInteger(String val);
成员方法:
public BigInteger add(BigInteger val) ; 加
public BigInteger subtract(BigInteger val) ; 减
public BigInteger multiply(BigInteger val) ; 乘
public BigInteger divide(BigInteger val) ; 除
public BigInteger[] divideAndRemainder(BigInteger val) ; 求商和余数
BigDecimal
作用:为了更精确的表示小数。
public static BigDecimal valueOf(double d);
Date日期类:
构造:
public Date(); //获取的是当前的时间,
public Date(long date); //如果给的种子一样,则生成的时间是一样的
成员方法:
public void setTime(long time);
public long getTime();
SimpleDateFormat类:
构造:
public SimpleDateFormat();
public SimpleDateFormat(String patter); //模板,格式
成员方法:
把日期对象转成时间字符串
public final String format(Date date);
把时间字符串转成日期对象
public Date parse(String str);
示例:计算自己来到这个世界上多少天了
思路:
1、定义两个日期字符串,分别记录自己的生日和今天的日期。
2、定义一个日期格式化对象(SimpleDateFormat)。
3、通过日期格式化对象吧 日期字符串 转成 日期对象。
4、通过两个日期对象分别获取到毫秒值,并计算出差值。
5、第四步得到的毫秒值/1000/60/60/24,得到的就是天数。
Calendar日历类: |
|