亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? stringutils.java

?? 個人Blog java編寫的Blog可以直接使用!
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 *  StringUtils.java
 *  
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 *  
 *  Author: Winter Lau (javayou@gmail.com)
 *  http://dlog4j.sourceforge.net
 */
package com.liusoft.dlog4j.util;

import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.util.NodeList;

/**
 * 字符串工具集合
 * @author Winter Lau
 */
public class StringUtils extends org.apache.commons.lang.StringUtils {

	/**
	 * 如果系統中存在舊版本的數據,則此值不能修改,否則在進行密碼解析的時候出錯
	 */
    private static final String PASSWORD_CRYPT_KEY = "__jDlog_";
	private final static String DES = "DES";
    private final static String ISO8859_1 = "8859_1";
	
	private final static NodeFilter nodeFilter = new NodeFilter() {
		public boolean accept(Node node) {
			return true;
		}
	};

	/**
	 * retrive the extend name of the given filename
	 * @param fn
	 * @return
	 */
	public static String getFileExtend(String fn){
		if(isEmpty(fn))
			return null;
		int idx = fn.lastIndexOf('.')+1;
		if(idx==0 || idx >= fn.length())
			return null;
		return fn.substring(idx);
	}
	
	/**
	 * 將字符串用ch分割并放入隊列
	 * @param tags
	 * @param ch
	 * @return
	 */
	public static List stringToList(String tags, String ch){
		if(tags==null)
			return null;
		ArrayList tagList = new ArrayList();
		StringTokenizer st = new StringTokenizer(tags, ch);
		while(st.hasMoreElements()){
			tagList.add(st.nextToken());
		}
		return tagList;
	}

	/**
	 * 將字符串用空格分割并放入隊列
	 * @param tags
	 * @return
	 */
	public static List stringToList(String tags){
		if(tags==null)
			return null;
		ArrayList tagList = new ArrayList();
		StringTokenizer st = new StringTokenizer(tags);
		while(st.hasMoreElements()){
			tagList.add(st.nextToken());
		}
		return tagList;
	}

	/**
	 * BASE64編碼
	 * @param s
	 * @return String
	 */
	public static byte[] enBASE64(byte[] bytes){
		return Base64Code.encode(bytes);
	}
	/**
	 * BASE64反編碼
	 * @param bytes
	 * @return byte[]
	 */
	public static byte[] deBASE64(byte[] bytes){
		return Base64Code.decode(bytes);
	}
	/**
	 * BASE64編碼
	 * @param s
	 * @return String
	 */
	public static String enBASE64(String s) {
		if (s != null) {
			byte abyte0[] = s.getBytes();
			abyte0 = Base64Code.encode(abyte0);
			s = new String(abyte0);
			return s;
		} 
		return null;
	}
	/**
	 * BASE64反編碼
	 * @param s
	 * @return String
	 */
	public static String deBASE64(String s) {
		if (s != null) {
			byte abyte0[] = s.getBytes();
			abyte0 = Base64Code.decode(abyte0);
			s = new String(abyte0);
			abyte0 = null;
			return s;
		} 
		return null;
	}
	/**
	 * HTML輸出內容格式轉換
	 * @param content
	 * @return
	 */
	public static String formatContent(String content) {
        if(content==null)
            return "";        
		String randomStr = String.valueOf(System.currentTimeMillis());
		String html = StringUtils.replace(content," ",randomStr);		
		html = StringUtils.replace(html, "&", "&");
		html = StringUtils.replace(html, "'", "'");
		html = StringUtils.replace(html, "\"", """);
		html = StringUtils.replace(html, "\t", "  ");// 替換跳格
		html = StringUtils.replace(html, " ", " ");// 替換空格
		html = StringUtils.replace(html, "<", "&lt;");
		html = StringUtils.replace(html, ">", "&gt;");
		return StringUtils.replace(html,randomStr,"&nbsp;").trim();
	}

    /**
	  * 抽取純文本信息
	  * @param inputHtml
	  * @return
	  */
	public static String extractText(String inputHtml) throws Exception {
		StringBuffer text = new StringBuffer();
		Parser parser = new Parser();
		parser.setInputHTML(new String(inputHtml.getBytes(),ISO8859_1));
		//Parser parser = Parser.createParser(new String(inputHtml.getBytes(),ISO8859_1));
		//遍歷所有的節點
		NodeList nodes = parser.extractAllNodesThatMatch(nodeFilter);
		for(int i=0;i<nodes.size();i++){
			Node node = nodes.elementAt(i);
			text.append(new String(node.toPlainTextString().getBytes(ISO8859_1)));
		}
		return text.toString();
	}

	/**
	 * 判斷是不是一個合法的電子郵件地址
	 * @param email
	 * @return
	 */
	public static boolean isEmail(String email){
		if(email==null)
			return false;
		email = email.trim();
		if(email.indexOf(' ')!=-1)
			return false;
		
		int idx = email.indexOf('@');
		if(idx==-1 || idx==0 || (idx+1)==email.length())
			return false;
		if(email.indexOf('@', idx+1)!=-1)
			return false;
        if(email.indexOf('.')==-1)
            return false;
		return true;
		/*
		Pattern emailer;
		if(emailer==null){
			String check = "^([a-z0-9A-Z]+[-|\\._]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
			emailer = Pattern.compile(check);
		}
	    Matcher matcher = emailer.matcher(email);
	    return matcher.matches();
		*/
	}
	
	/**
	 * 判斷字符串是否是一個IP地址
	 * @param addr
	 * @return
	 */
	public static boolean isIPAddr(String addr){
		if(isEmpty(addr))
			return false;
		String[] ips = split(addr, '.');
		if(ips.length != 4)
			return false;
		try{
			int ipa = Integer.parseInt(ips[0]);
			int ipb = Integer.parseInt(ips[1]);
			int ipc = Integer.parseInt(ips[2]);
			int ipd = Integer.parseInt(ips[3]);
			return ipa >= 0 && ipa <= 255 && ipb >= 0 && ipb <=255 && ipc >= 0
					&& ipc <= 255 && ipd >= 0 && ipd <=255;
		}catch(Exception e){}
		return false;
	}
	/**
	 * 加密
	 * @param src 數據源
	 * @param key 密鑰,長度必須是8的倍數
	 * @return	  返回加密后的數據
	 * @throws Exception
	 */
	public static byte[] encrypt(byte[] src, byte[] key)
		throws Exception {
		//		DES算法要求有一個可信任的隨機數源
		SecureRandom sr = new SecureRandom();
		// 從原始密匙數據創建DESKeySpec對象
		DESKeySpec dks = new DESKeySpec(key);
		// 創建一個密匙工廠,然后用它把DESKeySpec轉換成
		// 一個SecretKey對象
		SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
		SecretKey securekey = keyFactory.generateSecret(dks);
		// Cipher對象實際完成加密操作
		Cipher cipher = Cipher.getInstance(DES);
		// 用密匙初始化Cipher對象
		cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);
		// 現在,獲取數據并加密
		// 正式執行加密操作
		return cipher.doFinal(src);
	}
	
	/**
	 * 解密
	 * @param src	數據源
	 * @param key	密鑰,長度必須是8的倍數
	 * @return		返回解密后的原始數據
	 * @throws Exception
	 */
	public static byte[] decrypt(byte[] src, byte[] key)
		throws Exception {
		//		DES算法要求有一個可信任的隨機數源
		SecureRandom sr = new SecureRandom();
		// 從原始密匙數據創建一個DESKeySpec對象
		DESKeySpec dks = new DESKeySpec(key);
		// 創建一個密匙工廠,然后用它把DESKeySpec對象轉換成
		// 一個SecretKey對象
		SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
		SecretKey securekey = keyFactory.generateSecret(dks);
		// Cipher對象實際完成解密操作
		Cipher cipher = Cipher.getInstance(DES);
		// 用密匙初始化Cipher對象
		cipher.init(Cipher.DECRYPT_MODE, securekey, sr);
		// 現在,獲取數據并解密
		// 正式執行解密操作
		return cipher.doFinal(src);
	}
    /**
     * 數據解密
     * @param data
     * @param key 密鑰
     * @return
     * @throws Exception
     */
    public final static String decrypt(String data, String key){
    	if(data!=null)
        try {
            return new String(decrypt(hex2byte(data.getBytes()),key.getBytes()));
        }catch(Exception e) {
        	e.printStackTrace();
        }
        return null;
    }
    /**
     * 數據加密
     * @param data
     * @param key 密鑰
     * @return
     * @throws Exception
     */
    public final static String encrypt(String data, String key){
    	if(data!=null)
        try {
            return byte2hex(encrypt(data.getBytes(),key.getBytes()));
        }catch(Exception e) {
        	e.printStackTrace();
        }
        return null;
    }
    /**
     * 密碼解密
     * @param data
     * @return
     * @throws Exception
     */
    public final static String decryptPassword(String data){
    	if(data!=null)
        try {
            return new String(decrypt(hex2byte(data.getBytes()),PASSWORD_CRYPT_KEY.getBytes()));
        }catch(Exception e) {
        	e.printStackTrace();
        }
        return null;
    }
    /**
     * 密碼加密
     * @param password
     * @return
     * @throws Exception
     */
    public final static String encryptPassword(String password){
    	if(password!=null)
        try {
            return byte2hex(encrypt(password.getBytes(),PASSWORD_CRYPT_KEY.getBytes()));
        }catch(Exception e) {
        	e.printStackTrace();
        }
        return null;
    }
	/**
	 * 二行制轉字符串
	 * @param b
	 * @return
	 */
    public static String byte2hex(byte[] b) {
		String hs = "";
		String stmp = "";
		for (int n = 0; b!=null && n < b.length; n++) {
			stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
			if (stmp.length() == 1)
				hs = hs + "0" + stmp;
			else
				hs = hs + stmp;
		}
		return hs.toUpperCase();
	}
    
    public static byte[] hex2byte(byte[] b) {
        if((b.length%2)!=0)
            throw new IllegalArgumentException("長度不是偶數");
		byte[] b2 = new byte[b.length/2];
		for (int n = 0; n < b.length; n+=2) {
		    String item = new String(b,n,2);
		    b2[n/2] = (byte)Integer.parseInt(item,16);
		}
        return b2;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区av| 久久99国产精品免费网站| 久久久久久9999| 日韩欧美一级精品久久| 欧美日韩一级片网站| 在线观看免费一区| 在线观看日产精品| 欧美综合亚洲图片综合区| 色婷婷av久久久久久久| 91在线云播放| 91一区一区三区| 91黄视频在线| 欧美视频在线观看一区二区| 欧美又粗又大又爽| 欧美日本在线播放| 欧美一区二区视频在线观看2022 | 免费精品视频在线| 免费精品99久久国产综合精品| 日韩精品一二三区| 狠狠色狠狠色综合日日91app| 韩国v欧美v亚洲v日本v| 国产精品一二三四| 不卡av在线网| 欧美性大战久久久久久久蜜臀| 欧美日韩一卡二卡三卡 | 亚洲欧洲日产国产综合网| 中文字幕日本不卡| 亚洲欧美日韩国产手机在线 | 91在线你懂得| 日本道精品一区二区三区| 欧美日韩国产片| 欧美不卡123| 国产精品美女久久久久av爽李琼| 亚洲免费观看视频| 亚洲成人动漫av| 久久99蜜桃精品| av在线播放不卡| 欧美三级视频在线播放| 精品久久久久久久久久久院品网 | 久久欧美中文字幕| 成人免费在线观看入口| 午夜伊人狠狠久久| 国产一区日韩二区欧美三区| 99视频一区二区| 欧美人体做爰大胆视频| xf在线a精品一区二区视频网站| 中文字幕视频一区二区三区久| 亚洲aaa精品| 国产精品白丝av| 欧美在线不卡视频| 国产日韩欧美麻豆| 亚洲在线视频免费观看| 国内精品视频666| 色又黄又爽网站www久久| 制服丝袜日韩国产| 中文字幕在线观看一区二区| 视频一区二区中文字幕| 国产suv精品一区二区6| 欧美日韩一级黄| 中文字幕一区二区三区视频| 免费的成人av| 欧美在线观看视频在线| 欧美激情一区二区三区| 亚洲bt欧美bt精品777| 成人国产亚洲欧美成人综合网| 欧美日韩国产欧美日美国产精品| 国产欧美日韩视频在线观看| 午夜精品视频一区| 99精品久久只有精品| 精品国产91亚洲一区二区三区婷婷 | 欧美日韩专区在线| 欧美激情一区二区三区不卡| 日韩成人一级大片| 色8久久精品久久久久久蜜| 国产午夜亚洲精品羞羞网站| 香蕉加勒比综合久久| 一本大道久久a久久综合婷婷 | 日韩综合一区二区| 91在线观看高清| 国产视频不卡一区| 免费成人你懂的| 欧美体内she精视频| 中文字幕在线一区二区三区| 国产一区二区在线免费观看| 欧美日韩一区二区三区视频 | 国产在线精品国自产拍免费| 国产精品免费aⅴ片在线观看| 日韩高清一级片| 色老汉一区二区三区| 欧美激情一区二区三区在线| 国模娜娜一区二区三区| 欧美一区二区三级| 亚洲成人在线网站| 欧美丝袜丝交足nylons图片| 亚洲欧洲日产国产综合网| 成人午夜视频在线观看| 久久久蜜桃精品| 国产原创一区二区| 久久综合久色欧美综合狠狠| 青娱乐精品视频| 91精品婷婷国产综合久久性色| 亚洲一区在线观看网站| 欧美在线免费观看亚洲| 亚洲精品国产无套在线观| 91丝袜美女网| 亚洲免费观看高清完整版在线观看熊 | 成人h精品动漫一区二区三区| 久久久久久久久久久久久久久99| 国产一区啦啦啦在线观看| 精品国产免费一区二区三区四区 | 午夜久久久久久电影| 欧美日韩精品一区二区三区| 亚洲一区二区精品3399| 欧美影视一区二区三区| 亚洲成av人片一区二区梦乃| 欧美日韩久久久| 麻豆精品在线观看| 欧美不卡123| 岛国一区二区在线观看| 国产精品美女一区二区在线观看| 91片在线免费观看| 亚洲国产精品视频| 4438成人网| 激情图区综合网| 国产亚洲成aⅴ人片在线观看| 国产a久久麻豆| 亚洲欧美一区二区三区极速播放| 色婷婷国产精品综合在线观看| 亚洲激情在线播放| 欧美日韩精品久久久| 老色鬼精品视频在线观看播放| 精品国产91乱码一区二区三区| 国产成a人亚洲| 亚洲黄色免费网站| 欧美一区二区三区播放老司机| 国产精品影视在线观看| 中文字幕一区二区三区在线播放| 欧洲国内综合视频| 麻豆成人在线观看| 国产日本亚洲高清| 色乱码一区二区三区88| 日本强好片久久久久久aaa| 国产日本亚洲高清| 欧美私模裸体表演在线观看| 久久99精品久久只有精品| 国产精品久久久久天堂| 欧美日韩久久久久久| 国产成人午夜高潮毛片| 亚洲精品国产a久久久久久| 91精品国产综合久久蜜臀| 国产成人鲁色资源国产91色综| 成人avav影音| 视频在线在亚洲| 国产欧美精品区一区二区三区| 91极品视觉盛宴| 国产在线视频不卡二| 一区二区三区精品| 久久久久九九视频| 欧美精品在线观看播放| 成人三级伦理片| 日本亚洲最大的色成网站www| 国产女主播在线一区二区| 欧美猛男gaygay网站| 成人综合在线视频| 麻豆91小视频| 亚洲精品一二三| 国产肉丝袜一区二区| 欧美久久久久久蜜桃| av一区二区久久| 精品一二三四区| 夜色激情一区二区| 欧美—级在线免费片| 日韩一区二区三区在线观看| 91色九色蝌蚪| 国产91在线|亚洲| 七七婷婷婷婷精品国产| 一二三区精品视频| 亚洲国产成人私人影院tom| 日韩三级中文字幕| 欧美体内she精视频| 99久久综合国产精品| 国产麻豆成人传媒免费观看| 肉丝袜脚交视频一区二区| 亚洲色图制服丝袜| 国产亚洲午夜高清国产拍精品| 3d动漫精品啪啪一区二区竹菊| 91色九色蝌蚪| 暴力调教一区二区三区| 国产剧情在线观看一区二区| 日韩在线观看一区二区| 亚洲综合视频在线| 国产精品美日韩| 欧美国产激情二区三区| 久久综合国产精品| 日韩欧美在线网站| 亚洲人吸女人奶水| 国产亚洲一区字幕| 国产亚洲女人久久久久毛片| 欧美成人精品福利| 日韩西西人体444www|