day14 神奇的正则和工具类

来源:互联网 发布:软件测试核心期刊 编辑:程序博客网 时间:2024/06/05 20:50

14.01_常见对象(正则表达式的概述和简单使用)

  • A:正则表达式(有规律的字符串)
    • 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。
    • 作用:比如注册邮箱,邮箱有用户名和密码,一般会对其限制长度,这个限制长度的事情就是正则表达式做的。
  • B:案例演示

    • 需求:校验qq号码.

      • 1:要求必须是5-15位数字
      • 2:0不能开头
      • 3:必须都是数字
    • a:非正则表达式实现

    • b:正则表达式实现
    • String qq=”[1-9]\d{4,14}”; “23456”.matches(qq);检验字符串是否满足正则表达式 结果为true 注意matches和equals的区别,前者是用来匹配正则表达式的

14.02_常见对象(字符类演示)

  • A:字符类
    • [abc] a、b 或 c(简单类) a、b、c其中的一个字符 //[]中括号表示单个字符!!
    • [^abc] 任何一个字符,除了 a、b 或 c(否定) //”10”.matches(“[^abc]”); false 10代表1、0是两个字符
    • [a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围) 相当于并集 a-zUA-Z
    • [a-d[m-p]] a到d或m到p中的一个字符,并集,同上
    • [a-z&&[def]] d、e、f中的一个 交集
    • [a-z&&[^de]] a到z,除了d和e
    • [a-z&&[^d-e]] a到z,除了d到e(范围)
    • [0-9] 0到9的字符都包括

14.03_常见对象(预定义字符类演示)

  • A:预定义字符类
    • . 任何一个字符。 ..表示两个字符
    • \d 单个数字:同[0-9] 注意\表示转义字符,要表示\,用\d \表示\
    • \D:[^0-9] 非数字,除了0-9
    • \s空白字符 一个空格、制表符、回车等等都算一个空白字符,但是” “.matches(“\s”);结果为false 因为这是四个空格,代表四个字符
    • \S非空白字符
    • \w 单词字符:[a-zA-Z_0-9]
    • \W非单词字符

14.04_常见对象(数量词)

  • A:Greedy 数量词
    • X? X,一次或一次也没有 “a”.matches(“[abc]?”); true “d”.matches(“[abc]?”); false 只能是前面的abc出现一次或者是没出现,不能出现其他的字符,如”“.matches(“[abc]?”); false
    • X* X,零次或多次(包括一次)
    • X+ X,一次或多次
    • X{n} X,恰好 n 次
    • X{n,} X,至少 n 次 “45454”.matches(“\d{4,}”); true—–
    • X{n,m} X,至少 n 次,但是不超过 m 次

14.05_常见对象(正则表达式的分割功能)

  • A:正则表达式的分割功能
    • String类的功能:public String[] split(String regex)
    • 注意. String []str=”哈哈.啦啦.嘻嘻”.spilt(“.”); 这样数组str是空的,因为在这里.表示任意一个字符,这样就被切碎了。如果想用.来切割就要进行转义:String []str=”哈哈.啦啦.嘻嘻”.spilt(“\.”);
  • B:案例演示
    • 正则表达式的分割功能

14.06_常见对象(把给定字符串中的数字排序)

  • A:案例演示
    • 需求:我有如下一个字符串:”91 27 46 38 50”,请写代码实现最终输出结果是:”27 38 46 50 91”

14.07_常见对象(正则表达式的替换功能)

  • A:正则表达式的替换功能
    • String类的功能:public String replaceAll(String regex,String replacement)
    • String s=”hello12world!”; String regx=”\d”; s.replaceAll(regx,”“);将s中的所有数字以空字符替换掉
    • 注意. 用\.来表示
  • B:案例演示
    • 正则表达式的替换功能

14.08_常见对象(正则表达式的分组功能)

  • A:正则表达式的分组功能
    • 捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
  • 1     ((A)(B(C))) 2     (A 3     (B(C)) 4     (C) 组零始终代表整个表达式。

    B:案例演示
    叠词:快快乐乐 高高兴兴 死啦死啦
    这里写图片描述
    这里写图片描述
    a:切割
    需求:请按照叠词切割: “sdqqfgkkkhjppppkl”;
    这里写图片描述
    b:替换
    需求:我我….我…我.要…要要…要学….学学..学.编..编编.编.程.程.程..程
    将字符串还原成:“我要学编程”。
    这里写图片描述

14.09_常见对象(Pattern和Matcher的概述)

  • A:Pattern和Matcher的概述
  • B:模式和匹配器的典型调用顺序

    • 通过JDK提供的API,查看Pattern类的说明

    • 典型的调用顺序是

    • Pattern p = Pattern.compile(“a*b”);
    • Matcher m = p.matcher(“aaaaab”);
    • boolean b = m.matches();
      这里写图片描述

14.10_常见对象(正则表达式的获取功能)

  • A:正则表达式的获取功能
    • Pattern和Matcher的结合使用
  • B:案例演示
    • 需求:把一个字符串中的手机号码获取出来
      这里写图片描述

14.11_常见对象(Math类概述和方法使用)

  • A:Math类概述
    • Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
  • B:成员方法
    • public static int abs(int a) 绝对值
    • public static double ceil(double a) 向上取整,结果是一个double值 Math.cell(12.3) –>13.0
    • public static double floor(double a)向下取整,结果是一个double值 Math.cell(12.3) –>12.0
    • public static int max(int a,int b) min自学
    • public static double pow(double a,double b)
    • public static double random() 生成0.0到1.0的小数,但是不包括1.0
    • public static int round(float a) 参数为double的自学 四舍五入 Math.round(12.3f);–>13 Math.round(12.9f);–>13
    • public static double sqrt(double a)

14.12_常见对象(Random类的概述和方法使用)

  • A:Random类的概述
    • 此类用于产生随机数如果用相同的种子创建两个 Random 实例,
    • 则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。
  • B:构造方法
    • public Random() 每次产生不同的数
    • public Random(long seed) 指定种子,每次产生相同的数
  • C:成员方法
    • public int nextInt()
    • public int nextInt(int n)(重点掌握) 产生一个0到n的整数,包含0但是不包含n

14.13_常见对象(System类的概述和方法使用)

  • A:System类的概述
    • System 类包含一些有用的类字段和方法。它不能被实例化。
  • B:成员方法
    • System.in/out/err 标准输入流/输出流/错误输出流
    • public static void gc() 运行垃圾回收器,会调用finalize()去回收垃圾,可以重写Object类的finalize方法
    • public static void exit(int status) 终止正在运行的java虚拟机 参数0表示正常终止,非零表示异常终止
    • public static long currentTimeMillis() 返回以毫秒为单位的当前时间 从1970年1月1日到现在所隔时间对应的毫秒差,可以用于计算程序运行时间:long satrt=System.currentTimeMillis(); long end=System.currentTimeMillis(); end-start 为时间差
    • pubiic static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 数组复制 源数组、源数组起始位置、目标数组、目标数组起始位置、要复制的元素个数
  • C:案例演示
    • System类的成员方法使用

14.14_常见对象(BigInteger类的概述和方法使用)

  • A:BigInteger的概述
    • 可以让超过Integer范围内的数据进行运算
  • B:构造方法
    • public BigInteger(String val)
  • C:成员方法
    • 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) 返回两个大整数:一个是相除、一个是求余

14.15_常见对象(BigDecimal类的概述和方法使用)

  • A:BigDecimal的概述

    • 由于在运算的时候,float类型和double很容易丢失精度,演示案例。
    • 所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal

    • 不可变的、任意精度的有符号十进制数。

  • B:构造方法
    • public BigDecimal(String val)
  • C:成员方法
    • public BigDecimal add(BigDecimal augend)
    • public BigDecimal subtract(BigDecimal subtrahend)
    • public BigDecimal multiply(BigDecimal multiplicand)
    • public BigDecimal divide(BigDecimal divisor)
  • D:案例演示
    • BigDecimal类的构造方法和成员方法使用

14.16_常见对象(Date类的概述和方法使用)(掌握)

  • A:Date类的概述
    • 类 Date 表示特定的瞬间,精确到毫秒。
  • B:构造方法
    • public Date()
    • public Date(long date)毫秒差 1970.1.1 8:00am
  • C:成员方法
    • public long getTime() 获取时间毫秒值 1970.1.1
    • public void setTime(long time)

14.17_常见对象(SimpleDateFormat类实现日期和字符串的相互转换)(掌握)

  • A:DateFormat类的概述
    • DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。是抽象类,所以使用其子类SimpleDateFormat
  • B:SimpleDateFormat构造方法
    • public SimpleDateFormat() 格式化时间! new SimpleDateFormat(“yyyy年MM月dd日 HH:mm:ss”).format(new date());
    • public SimpleDateFormat(String pattern)
  • C:成员方法
    • public final String format(Date date)
    • public Date parse(String source) 将时间字符串转化为日期对象
    • String s=”“2008年11月20日 8:08:56;
    • SimpleDateFormat sdf= new SimpleDateFormat(“yyyy年MM月dd日 HH:mm:ss”)
    • Date d=sdf.parse(s);

14.18_常见对象(你来到这个世界多少天案例)(掌握)

  • A:案例演示
    • 需求:算一下你来到这个世界多少天?
    • (new SimpleDateFormat(“yyyy年MM月dd日”).parse(“2017年6月22日”).getTime()-new SimpleDateFormat(“yyyy年MM月dd日”).parse(“1997年1月16日”).getTime())/1000/60/60/24 1秒=1000毫秒

14.19_常见对象(Calendar类的概述和获取日期的方法)(掌握)

  • A:Calendar类的概述
    • Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
  • B:成员方法
    • public static Calendar getInstance()
    • public int get(int field)

14.20_常见对象(Calendar类的add()和set()方法)(掌握)

  • A:成员方法
    • public void add(int field,int amount)
    • public final void set(int year,int month,int date)
  • B:案例演示
    • Calendar类的成员方法使用

14.21_常见对象(如何获取任意年份是平年还是闰年)(掌握)

  • A:案例演示
    • 需求:键盘录入任意一个年份,判断该年是闰年还是平年

14.22_day14总结

  • 把今天的知识点总结一遍。
原创粉丝点击