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;
	}

}













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