Java tutorial
/** * Copyright © 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\\[|\\]\\]>", ""); } }