<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">package com.bcxin.signature.util;

import org.apache.commons.lang3.StringEscapeUtils;
import sun.misc.BASE64Encoder;

import java.io.UnsupportedEncodingException;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 瀛楃涓插伐鍏风被, 缁ф壙org.apache.commons.lang3.StringUtils绫�
 * 2017-06-28
 * @author wanggd
 * @version 1.0
 */
public class StringUtils extends org.apache.commons.lang3.StringUtils {
	
	public static String lowerFirst(String str){
		if(StringUtils.isBlank(str)) {
			return "";
		} else {
			return str.substring(0,1).toLowerCase() + str.substring(1);
		}
	}
	
	public static String upperFirst(String str){
		if(StringUtils.isBlank(str)) {
			return "";
		} else {
			return str.substring(0,1).toUpperCase() + str.substring(1);
		}
	}

	/**
	 * 鏇挎崲鎺塇TML鏍囩鏂规硶
	 */
	public static String replaceHtml(String html) {
		if (isBlank(html)){
			return "";
		}
		String regEx = "&lt;.+?&gt;";
		Pattern p = Pattern.compile(regEx);
		Matcher m = p.matcher(html);
		String s = m.replaceAll("");
		return s;
	}

	/**
	 * 缂╃暐瀛楃涓诧紙涓嶅尯鍒嗕腑鑻辨枃瀛楃锛�
	 * @param str 鐩爣瀛楃涓�
	 * @param length 鎴彇闀垮害
	 * @return
	 */
	public static String abbr(String str, int length) {
		if (str == null) {
			return "";
		}
		try {
			StringBuilder sb = new StringBuilder();
			int currentLength = 0;
			for (char c : replaceHtml(StringEscapeUtils.unescapeHtml4(str)).toCharArray()) {
				currentLength += String.valueOf(c).getBytes("GBK").length;
				if (currentLength &lt;= length - 3) {
					sb.append(c);
				} else {
					sb.append("...");
					break;
				}
			}
			return sb.toString();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return "";
	}

	/**
	 * 缂╃暐瀛楃涓诧紙鏇挎崲html锛�
	 * @param str 鐩爣瀛楃涓�
	 * @param length 鎴彇闀垮害
	 * @return
	 */
	public static String rabbr(String str, int length) {
        return abbr(replaceHtml(str), length);
	}
		
	
	/**
	 * 杞崲涓篋ouble绫诲瀷
	 */
	public static Double toDouble(Object val){
		if (val == null){
			return 0D;
		}
		try {
			return Double.valueOf(trim(val.toString()));
		} catch (Exception e) {
			return 0D;
		}
	}

	/**
	 * 杞崲涓篎loat绫诲瀷
	 */
	public static Float toFloat(Object val){
		return toDouble(val).floatValue();
	}

	/**
	 * 杞崲涓篖ong绫诲瀷
	 */
	public static Long toLong(Object val){
		return toDouble(val).longValue();
	}

	/**
	 * 杞崲涓篒nteger绫诲瀷
	 */
	public static Integer toInteger(Object val){
		return toLong(val).intValue();
	}
	
	/**
	 * 鑾峰彇UUID
	 * @author       liandi
	 * @since        esign, 2017骞�10鏈�23鏃�
	 * @return
	 */
	public static String getUUID()
	{
	    return UUID.randomUUID().toString().replace("-", "");
	}
	
	/**
	 * 灏嗕簩杩涘埗鏁版嵁杞崲涓篵ase64瀛楃涓�
	 * @author       liandi
	 * @since        esign, 2017骞�10鏈�23鏃�
	 * @param data
	 * @return
	 */
	public static String encodeBase64(byte[] data)
	{
	    BASE64Encoder encoder = new BASE64Encoder();
        
        return encoder.encode(data);
	}
	
	/**
	 * 灏嗕簩杩涘埗鏁版嵁杞崲鎴愬崄鍏繘琛屽瓧绗︿覆
	 * @author       liandi
	 * @since        esign, 2017骞�10鏈�24鏃�
	 * @param bytes
	 * @return
	 */
	public static String bytes2Hex(byte[] bytes)  
    {  
	    if(null == bytes) return null;
	    
        StringBuilder sb = new StringBuilder();  
        String tmp = null;  
        
        for (byte b : bytes)  
        {  
            // 灏嗘瘡涓瓧鑺備笌0xFF杩涜涓庤繍绠楋紝鐒跺悗杞寲涓�10杩涘埗锛岀劧鍚庡€熷姪浜嶪nteger鍐嶈浆鍖栦负16杩涘埗  
            tmp = Integer.toHexString(0xFF &amp; b);  
            
            if (tmp.length() == 1)// 姣忎釜瀛楄妭8涓猴紝杞负16杩涘埗鏍囧織锛�2涓�16杩涘埗浣�  
            {  
                tmp = "0" + tmp;  
            }  
            
            sb.append(tmp);  
        }  
  
        return sb.toString();  
    }  
	
	public static String OnlyFilterOutNumbers(String str)
    {
        StringBuilder result = new StringBuilder();
        
        for (int i = 0, len = str.length(); i &lt; len; i++)
        {
            if (str.charAt(i) &gt;= 48 &amp;&amp; str.charAt(i) &lt;= 57)
            {
                result.append(str.charAt(i));
            }
        }
        
        return result.toString();
    }
	
}
</pre></body></html>