java -day03

 

正则表达式

基本正则表达式简介

[zdf]代表中括号内任意一个字符
[a-z]代表从a到z中间的一个    
[^abc]代表除了abc的任意字符
[a-zA-Z0-9]a-z,A-Z,0-9中任意一个字符
[a-z&&[^bc]]a-z中除了bc以外任意一个字符,其中&&表示“与”的关系
(x表示一个字符)
({n}表示 重复出现n个)
({n,}表示 重复出现大于n个)
({n,m}表示重复出现大于n但小于m个)
X?表示一个或0个x
X*表示0个或任意多个X
X+表示一个到任意多个X(大于等于1个X)
X{n}表示n个X
X{n,}表示n个到任意多个X(大于等于n个X)
X{n,m}表示n个到m个X
.任意一个字符
\d任意一个数字字符,相当于[0-9]
\w单字符 ,相当于[a-zA-Z0-9]
\s空白字符,相当于[\t\n\xOB\f\r]
\D非数字字符
\W非单词字符
\S非空白字符

分组: ()圆括号表示分组,可以将一系列正则表达式看做一个整体,
分组时可以使用“|”表示“或”关系,
例如:匹配手机号码前面的区号:(\+ 86|0086)?\s?\d{11}
上述例子中,圆括号表示这里需要出现”+86”或者“0086"

^ 代表字符串开始
$ 代表字符串结束

matches(String regex);boolean该方法匹配目标字符串是否符合给定的格式要求,符合返回true 否则返回false

        String regex="^\\w+[@]\\w+(\\.[a-z]+)+$";//格式
		System.out.println(regex);
		String str = "[email protected]";
		System.out.println(str.matches(regex));
		
		
		String regex1 = "[w]{3}\\.\\w+(\\.[a-z]+)+";
		str="www.sxau.edu.cn";
		System.out.println(str.matches(regex1));
		
		String regex2 = "\\d{15}(\\d{2}[0-9Xx])?";
		str = "123456789123456789";
		System.out.println(str.matches(regex2));

split(String regex);String[]  根据给定的字符格式来拆解字符串

		/*
		 * 根据符号拆分时,连续出现该符号 (该字符出现的位置在开头和中间),拆分后的结果是空字符
		 * 
		 */
		String regex3 = ",";//根据,来拆分 返回String[]
		System.out.println(str1);
		String[] m = str1.split(regex3);
		System.out.println(Arrays.toString(m));
        String str2 = ",,,rt,fwe,,g,,egher,,,,,,";
		System.out.println(str2);
		String regex4=",+";
		String []s = str2.split(regex4);
//		System.out.println(Arrays.toString(s));
		
		/*根据给定的字符格式来拆解字符串
		 * split(String regex);String[]
		 */
		System.out.println(s.length);
		for(int i=0;i<s.length;i++) {
			System.out.println(s[i]);
		}

replaceAll(String oldatr,String new Str);String 将字符串中满足格式要求的部分内容进行替换

		/*
		 * 将字符串中满足格式要求的部分内容进行替换
		 * replaceAll(String oldatr,String new Str);String
		 */
		String str ="123a48dsdf123asdf123asdf";
		str = str.replaceAll("[12a]", "###");
		System.out.println(str);
		
		
		Scanner scn = new Scanner(System.in);
		String str1 =  scn.next();
		str1 = str1.replaceAll("1","*");
		System.out.println(str1);

作业

 

  1. 编写RegExUtils类,提供静态方法实现对身份证号码、邮政编码、手机号码的合法性校验
  2. 重写员工类(Emp)的equals和toString方法

在面向对象的课程中,我们曾使用过Emp类,本案例要求重写Emp类的toString方法和equals方法,详细要求如下:

1),重写Emp类的toString方法,返回Emp对象的名字、年龄、性别和工资信息,例如:张三,23,男,5000。

2),重写Emp类的equals方法,两个Emp引用变量相等的条件是名字相等。

  1. 输入数字字符串,转换为整数或浮点数

用户从控制台接收一个字符串,通过程序判断该字符串是整数,还是小数。如果既不是整数也不是小数,程序输出“数字格式不正确”。程序交互过程如下所示:

用户输入整数字符串的情况,如图-1所示:

图- 1

用户输入为小数的情况,如图-2所示:

图- 2

用户输入的既不是整数也不是小数的情况,如图-3所示:

图- 3

package day03;

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner scn = new Scanner(System.in);
		System.out.println("请输入一个数字:");
		String str = scn.next();
		String regex = "\\d+[.]?\\d+";
		if(str.matches(regex)) {
			String[] arr = str.split("\\.");
			if(arr.length==2) {
				System.out.println(str + "是小数");
			}else {
				System.out.println(str + "是整数");
			}
			
		}else {
			System.out.println("数字格式不正确");
		}

	}
	
	
}

package day03;

import java.util.Scanner;

public class RegExUtils {
	public static void main(String[] args) {
		//身份证号
		//\d{15}(\d{2}[0-9Xx])?
		String id="123456369852147789";
		String mail="033100";
		String phone = "18835469024";
		System.out.println(RegExUtils.idregex(id));
		
		System.out.println(RegExUtils.mailRegex(mail));
		System.out.println(RegExUtils.phoneRegex(phone));
		
	}
	public static boolean idregex(String str) {
		String idRegex ="\\d{15}(\\d{2}[0-9Xx])?";
		return str.matches(idRegex);
	}
	
	public static boolean mailRegex(String str) {
		String mailRegex ="\\d{6}";
		return str.matches(mailRegex);
	}
	
	public static boolean phoneRegex(String str) {
		String phoneRegex ="\\d{11}";
		return str.matches(phoneRegex);
	}
}
package day03;

public class Emp {
	/*
	  在面向对象的课程中,我们曾使用过Emp类,本案例要求重写Emp类的toString方法和equals方法,详细要求如下:
	1),重写Emp类的toString方法,返回Emp对象的名字、年龄、性别和工资信息,例如:张三,23,男,5000。
	2),重写Emp类的equals方法,两个Emp引用变量相等的条件是名字相等。
	 */
	public static void main(String[] args) {
		Emp emp = new Emp("张三",15,"男",9223);
		Emp emp1= new Emp("张四",15,"男",9223);
		
		System.out.println(emp.toString());
		System.out.println(emp.equals(emp1));
		
	}
	private String name;
	private int age;
	private String sex;
	private int salary;
	public Emp(String name, int age, String sex, int salary) {
		this.name = name;
		this.age = age;
		this.sex = sex;
		this.salary = salary;
	}

	public String toString() {
		String str="";
		str+=this.name+",";
		str+=String.valueOf(this.age)+",";
		str+=this.sex+",";
		str+=String.valueOf(this.salary)+"。";
		return str;
		
	}
	
	public boolean equals(Emp emp) {
		boolean b = this.name.equals(emp.name);
		return b;
		
	}
}

猜你喜欢

转载自blog.csdn.net/qq_38339863/article/details/82429169