Java - 反射机制 - 正则表达式

反射机制:在程序运行状态下,动态获取信息,动态调用对象的功能。是对类的解剖

Class<T>类:对字节码文件(类)的描述。封装了类的所有信息。

public class ClassDemo {
	/*
	 * 用反射机制模拟电脑运行 
	 * 1.定义一个接口 
	 * 3.使用接口 
	 * 4.读取配置文件,实例化接口子类。         <pre name="code" class="html">	 * 2....实现接口....
 */public static void main(String[] args) throws IOException, Exception {Computer c = new Computer();// 读取配置文件Properties pro = new Properties();FileReader fr = new FileReader("usb.properties");pro.load(fr);// 根据读取到的类名,实例化接口子类。for (int i = 0; i < pro.size(); i++) {// 获取类名String usbName = pro.getProperty("usb" + (i + 1));// 获取该类名所对应的字节码文件Class clazz = Class.forName(usbName);// 创建该类的一个实例,泛型不指定Object,强转。InterfaceUsb usb = (InterfaceUsb) clazz.newInstance();c.useUsb(usb);}}}


/*
 * 定义一个Usb接口。
 */
public interface InterfaceUsb {
	public void open();
	public void close();
}

/*
 * 使用usb接口
 */
public class Computer {
	Computer() {
		System.out.println("运行电脑");
	}

	// 使用Usb
	public void useUsb(InterfaceUsb usb) {
		if (usb != null) {
			usb.open();
			usb.close();
		}
	}
}

/*
 * 实现usb接口
 */
public class Mouse implements InterfaceUsb {
	
	public void open() {
		System.out.println("插入鼠标");
	}
	public void close() {
		System.out.println("拔出鼠标");
	}
}


正则表达式(regex):用于操作字符串数据。匹配、替换、获取、查找、、、

Pattern类:正则表达式的编译表示形式。指定为字符串的正则表达式必须首先被编译为此类的实例。

                       --模式--将一个字符串转换成一个正则表达式--

Matcher类:匹配器、、根据 Pattern 执行匹配操作的引擎。 

                       --描述正则表达式如何操作字符串数据

、、正则表达式小案例、、、、

import java.util.TreeSet;

public class RegexTest {

	public static void main(String[] args) {

		// 1.治疗口吃。将"我我..我我...来来..来...了.了了..了.了..了"转成"我来了"
		String str1 = "我我..我我...来来..来...了.了了..了.了..了";
		str1 = changeString(str1);
		System.out.println(str1);// 我来了

		// 2.对ip地址排序"127.0.0.1   189.3.5.4   8.8.8.8   255.36.21.8"
		String ip_str = "127.0.0.1   189.3.5.4   8.8.8.8   255.36.21.8";
		sortIp(ip_str);

		/****************
		 * 8.8.8.8 * 127.0.0.1 * 189.3.5.4 * 255.36.21.8 *
		 ****************/

		// 3.校验邮箱
		String email = "[email protected]";
		boolean b = checkEmail(email);
		System.out.println(b);

		/*
		 * 4.网页爬虫 
		 * 使用URL统一资源定位符的 openStream()读取URL引用的资源
		 * 正则获取... 
		 * 创建一个Pattern...
		 * 获取Matcher...和要匹配的数据关联 
		 * 保存匹配的数据
		 */

	}

	private static boolean checkEmail(String email) {

		return email.matches("[\\w]+@[\\w]+(\\.[\\w]+)+");
	}

	private static void sortIp(String ip_str) {

		// 先补0
		ip_str = ip_str.replaceAll("(\\d+)", "00$1");
		// 保留后三位
		ip_str = ip_str.replaceAll("0*(\\d{3})", "$1");
		// 再切割
		String[] ips = ip_str.split(" +");

		// 排序想到 TreeSet 集合
		TreeSet<String> ts = new TreeSet<String>();
		for (String ip : ips) {
			ts.add(ip);
		}
		for (String ip : ts) {
			ip = ip.replaceAll("0*(\\d+)", "$1");
			System.out.println(ip);
		}

	}

	/*
	 * 治疗口吃
	 */
	private static String changeString(String str1) {
		// 删除..即替换成空
		str1 = str1.replaceAll("\\.+", "");
		// 删除重复,即将多个相同字替换成一个
		str1 = str1.replaceAll("(.)\\1*", "$1");
		return str1;
	}

}













發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章