com.ncr.itss.core.utils.StringUtils.java Source code

Java tutorial

Introduction

Here is the source code for com.ncr.itss.core.utils.StringUtils.java

Source

/**
 * Copyright &copy; 2012-2013 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 * <p/>
 * Licensed under the Apache License, Version 2.0 (the "License");
 */
package com.ncr.itss.core.utils;

import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.shiro.codec.Hex;
import org.apache.shiro.crypto.hash.Md5Hash;
//import org.springframework.security.authentication.encoding.Md5PasswordEncoder;

import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * , org.apache.commons.lang3.StringUtils
 *
 * @author ThinkGem
 * @version 2013-05-22
 */
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);
        }
    }

    /**
     * ?HTML
     */
    public static String replaceHtml(String html) {
        if (isBlank(html)) {
            return "";
        }
        String regEx = "<.+?>";
        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 <= 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);
    }

    /**
     * ?Double
     */
    public static Double toDouble(Object val) {
        if (val == null) {
            return 0D;
        }
        try {
            return Double.valueOf(trim(val.toString()));
        } catch (Exception e) {
            return 0D;
        }
    }

    /**
     * ?Float
     */
    public static Float toFloat(Object val) {
        return toDouble(val).floatValue();
    }

    /**
     * ?Long
     */
    public static Long toLong(Object val) {
        return toDouble(val).longValue();
    }

    /**
     * ?Integer
     */
    public static Integer toInteger(Object val) {
        return toLong(val).intValue();
    }

    /**
     * ?
     */
    public static String getRemoteAddr(HttpServletRequest request) {
        String remoteAddr = request.getHeader("X-Real-IP");
        if (isNotBlank(remoteAddr)) {
            remoteAddr = request.getHeader("X-Forwarded-For");
        } else if (isNotBlank(remoteAddr)) {
            remoteAddr = request.getHeader("Proxy-Client-IP");
        } else if (isNotBlank(remoteAddr)) {
            remoteAddr = request.getHeader("WL-Proxy-Client-IP");
        }
        return remoteAddr != null ? remoteAddr : request.getRemoteAddr();
    }

    /**
     * md5
     *
     * @param str .
     * @return .
     */
    public static String md5(String str) {//Shiro 
        return new Md5Hash(str).toString();
    }
    //    public static String md5Format(String str) {
    //        Md5PasswordEncoder md5 = new Md5PasswordEncoder();
    //        // false ?32?Hex, encodeHashAsBase64, Acegi ?; true  ?24?Base64
    //        md5.setEncodeHashAsBase64(false);
    //
    //        return md5.encodePassword(str, null);
    //    }

    /**
     * md5
     *
     * @param str .
     * @return .
     */
    public static String md5AsBase64(String str) {
        String base64Encoded = Hex.encodeToString(str.getBytes());
        return base64Encoded;
    }
    //    public static String md5FormatAsBase64(String str) {
    //        Md5PasswordEncoder md5 = new Md5PasswordEncoder();
    //        // false ?32?Hex, encodeHashAsBase64, Acegi ?; true  ?24?Base64
    //        md5.setEncodeHashAsBase64(true);
    //
    //        return md5.encodePassword(str, null);
    //    }

    /**
     * SHA1
     *
     * @param str 
     * @return ?
     */
    public static String generateSHA1(String str) {
        if (str == null) {
            return null;
        }
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
            messageDigest.update(str.getBytes());
            return byte2String(messageDigest.digest());
        } catch (Exception e) {
            return null;
        }
    }

    /**
     * ?
     *
     * @param digest 
     * @return ??
     */
    public static String byte2String(byte[] digest) {
        char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
        char[] resultCharArray = new char[digest.length * 2];
        int index = 0;

        for (byte b : digest) {
            resultCharArray[index++] = hexDigits[b >>> 4 & 0xf];
            resultCharArray[index++] = hexDigits[b & 0xf];
        }

        return new String(resultCharArray);
    }

    public static String replaceCDATA(String str) {
        return str.replaceAll("<!\\[CDATA\\[|\\]\\]>", "");
    }

}