diff --git a/src/main/java/com/nis/util/StringUtils.java b/src/main/java/com/nis/util/StringUtils.java index e1113c80c..cd30adf6d 100644 --- a/src/main/java/com/nis/util/StringUtils.java +++ b/src/main/java/com/nis/util/StringUtils.java @@ -1,520 +1,520 @@ -/** - * Copyright © 2012-2014 JeeSite All rights reserved. - */ -package com.nis.util; - -import java.io.UnsupportedEncodingException; -import java.util.List; -import java.util.Locale; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import javax.servlet.http.HttpServletRequest; - -import org.apache.commons.lang3.StringEscapeUtils; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; -import org.springframework.web.servlet.LocaleResolver; - -import com.ckfinder.connector.ServletContextFactory; -import com.google.common.collect.Lists; -import com.nis.web.service.SpringContextHolder; - -/** - * 字符串工具类, 继承org.apache.commons.lang3.StringUtils类 - * - * @author ThinkGem - * @version 2013-05-22 - */ -public class StringUtils extends org.apache.commons.lang3.StringUtils { - - private static final char SEPARATOR = '_'; - private static final String CHARSET_NAME = "UTF-8"; - public static final String HASH_ALGORITHM = "SHA-1"; - public static final int HASH_INTERATIONS = 1024; - public static final int SALT_SIZE = 8; - - /** - * 转换为字节数组 - * - * @param str - * @return - */ - public static byte[] getBytes(String str) { - if (str != null) { - try { - return str.getBytes(CHARSET_NAME); - } catch (UnsupportedEncodingException e) { - return null; - } - } else { - return null; - } - } - - /** - * 转换为字节数组 - * - * @param str - * @return - */ - public static String toString(byte[] bytes) { - try { - return new String(bytes, CHARSET_NAME); - } catch (UnsupportedEncodingException e) { - return EMPTY; - } - } - - /** - * 是否包含字符串 - * - * @param str - * 验证字符串 - * @param strs - * 字符串组 - * @return 包含返回true - */ - public static boolean inString(String str, String... strs) { - if (str != null) { - for (String s : strs) { - if (str.equals(trim(s))) { - return true; - } - } - } - return false; - } - - /** - * 替换掉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; - } - - /** - * 替换为手机识别的HTML,去掉样式及属性,保留回车。 - * - * @param html - * @return - */ - public static String replaceMobileHtml(String html) { - if (html == null) { - return ""; - } - return html.replaceAll("<([a-z]+?)\\s+?.*?>", "<$1>"); - } - - /** - * 替换为手机识别的HTML,去掉样式及属性,保留回车。 - * - * @param txt - * @return - */ - public static String toHtml(String txt) { - if (txt == null) { - return ""; - } - return replace(replace(Encodes.escapeHtml(txt), "\n", "
"), "\t", "    "); - } - - /** - * 缩略字符串(不区分中英文字符) - * - * @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 ""; - } - - public static String abbr2(String param, int length) { - if (param == null) { - return ""; - } - StringBuffer result = new StringBuffer(); - int n = 0; - char temp; - boolean isCode = false; // 是不是HTML代码 - boolean isHTML = false; // 是不是HTML特殊字符,如  - for (int i = 0; i < param.length(); i++) { - temp = param.charAt(i); - if (temp == '<') { - isCode = true; - } else if (temp == '&') { - isHTML = true; - } else if (temp == '>' && isCode) { - n = n - 1; - isCode = false; - } else if (temp == ';' && isHTML) { - isHTML = false; - } - try { - if (!isCode && !isHTML) { - n += String.valueOf(temp).getBytes("GBK").length; - } - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - - if (n <= length - 3) { - result.append(temp); - } else { - result.append("..."); - break; - } - } - // 取出截取字符串中的HTML标记 - String temp_result = result.toString().replaceAll("(>)[^<>]*(]*/?>", - ""); - // 去掉成对的HTML标记 - temp_result = temp_result.replaceAll("<([a-zA-Z]+)[^<>]*>(.*?)", "$2"); - // 用正则表达式取出标记 - Pattern p = Pattern.compile("<([a-zA-Z]+)[^<>]*>"); - Matcher m = p.matcher(temp_result); - List endHTML = Lists.newArrayList(); - while (m.find()) { - endHTML.add(m.group(1)); - } - // 补全不成对的HTML标记 - for (int i = endHTML.size() - 1; i >= 0; i--) { - result.append(""); - } - return result.toString(); - } - - /** - * 转换为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(); - } - - /** - * 获得i18n字符串 - */ - public static String getMessage(String code, Object[] args) { - LocaleResolver localLocaleResolver = (LocaleResolver) SpringContextHolder.getBean(LocaleResolver.class); - HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()) - .getRequest(); - Locale localLocale = localLocaleResolver.resolveLocale(request); - return SpringContextHolder.getApplicationContext().getMessage(code, args, localLocale); - } - - /** - * 获得用户远程地址 - */ - 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(); - } - - /** - * 驼峰命名法工具 - * - * @return toCamelCase("hello_world") == "helloWorld" - * toCapitalizeCamelCase("hello_world") == "HelloWorld" - * toUnderScoreCase("helloWorld") = "hello_world" - */ - public static String toCamelCase(String s) { - if (s == null) { - return null; - } - - s = s.toLowerCase(); - - StringBuilder sb = new StringBuilder(s.length()); - boolean upperCase = false; - for (int i = 0; i < s.length(); i++) { - char c = s.charAt(i); - - if (c == SEPARATOR) { - upperCase = true; - } else if (upperCase) { - sb.append(Character.toUpperCase(c)); - upperCase = false; - } else { - sb.append(c); - } - } - - return sb.toString(); - } - - /** - * 驼峰命名法工具 - * - * @return toCamelCase("hello_world") == "helloWorld" - * toCapitalizeCamelCase("hello_world") == "HelloWorld" - * toUnderScoreCase("helloWorld") = "hello_world" - */ - public static String toCapitalizeCamelCase(String s) { - if (s == null) { - return null; - } - s = toCamelCase(s); - return s.substring(0, 1).toUpperCase() + s.substring(1); - } - - /** - * 驼峰命名法工具 - * - * @return toCamelCase("hello_world") == "helloWorld" - * toCapitalizeCamelCase("hello_world") == "HelloWorld" - * toUnderScoreCase("helloWorld") = "hello_world" - */ - public static String toUnderScoreCase(String s) { - if (s == null) { - return null; - } - - StringBuilder sb = new StringBuilder(); - boolean upperCase = false; - for (int i = 0; i < s.length(); i++) { - char c = s.charAt(i); - - boolean nextUpperCase = true; - - if (i < (s.length() - 1)) { - nextUpperCase = Character.isUpperCase(s.charAt(i + 1)); - } - - if ((i > 0) && Character.isUpperCase(c)) { - if (!upperCase || !nextUpperCase) { - sb.append(SEPARATOR); - } - upperCase = true; - } else { - upperCase = false; - } - - sb.append(Character.toLowerCase(c)); - } - - return sb.toString(); - } - - /** - * 如果不为空,则设置值 - * - * @param target - * @param source - */ - public static void setValueIfNotBlank(String target, String source) { - if (isNotBlank(source)) { - target = source; - } - } - - /** - * 转换为JS获取对象值,生成三目运算返回结果 - * - * @param objectString - * 对象串 例如:row.user.id - * 返回:!row?'':!row.user?'':!row.user.id?'':row.user.id - */ - public static String jsGetVal(String objectString) { - StringBuilder result = new StringBuilder(); - StringBuilder val = new StringBuilder(); - String[] vals = split(objectString, "."); - for (int i = 0; i < vals.length; i++) { - val.append("." + vals[i]); - result.append("!" + (val.substring(1)) + "?'':"); - } - result.append(val.substring(1)); - return result.toString(); - } - - /** - * 生成安全的密码,生成随机的16位salt并经过1024次 sha-1 hash - */ - public static String entryptPassword(String plainPassword) { - byte[] salt = Digests.generateSalt(SALT_SIZE); - byte[] hashPassword = Digests.sha1(plainPassword.getBytes(), salt, HASH_INTERATIONS); - return Encodes.encodeHex(salt) + Encodes.encodeHex(hashPassword); - } - - /** - * 验证密码 - * - * @param plainPassword - * 明文密码 - * @param password - * 密文密码 - * @return 验证成功返回true - */ - public static boolean validatePassword(String plainPassword, String password) { - byte[] salt = Encodes.decodeHex(password.substring(0, 16)); - byte[] hashPassword = Digests.sha1(plainPassword.getBytes(), salt, HASH_INTERATIONS); - return password.equals(Encodes.encodeHex(salt) + Encodes.encodeHex(hashPassword)); - } - - /** - * 获取上传文件的根目录 - * - * @return - */ - public static String getUserfilesBaseDir() { - String dir = Configurations.getStringProperty("userfiles.basedir", ""); - try { - if (StringUtils.isBlank(dir)) { - dir = ServletContextFactory.getServletContext().getRealPath("/"); - } else { - dir = ServletContextFactory.getServletContext().getRealPath("/") + dir; - } - } catch (Exception e) { - return ""; - } - - if (!dir.endsWith("/")) { - dir += "/"; - } - return dir; - } - - /** - * - *

- * 判断字符串是否为空. 为空条件:全角\半角\tab 等没有实际意义的字符. - * 具体参看{@link Character#isWhitespace(char)}对空格的定义. - *

- * - *
-	* StringUtils.isBlank("  ") = true 为半角空格
-	* StringUtils.isBlank("  ") = true 为全角空格
-	* StringUtils.isBlank("	") = true 为tab键
-	 * 
- * - * @param str - * 字符串 - * @return true 字符串为空 ,false 不为空 - */ - public static boolean strIsBlank(String str) { - int strLen; - if (str == null || (strLen = str.length()) == 0) { - return true; - } - for (int i = 0; i < strLen; i++) { - if ((Character.isWhitespace(str.charAt(i)) == false)) { - return false; - } - } - return true; - } - - /** - * 截取转义页面字符串 - * @param str - * @param len - * @return - */ - public static String stringFormat(String str,int len){ - if(str==null||str.trim().equals("")||str.trim().equals("null")){ - return ""; - } - - if(len!=-1){ - try { - StringBuilder sb = new StringBuilder(); - int currentLength = 0; - for (char c : str.toCharArray()) { - currentLength += String.valueOf(c).getBytes("GBK").length; - if (currentLength <= len - 3) { - sb.append(c); - } else { - sb.append("..."); - break; - } - } - return Encodes.escapeHtml(sb.toString()); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - } - return str; - } - - public static String revertStr(String str,String regex){ - String[] split = str.split(regex); - String value = ""; - for (int i = split.length-1; i >= 0 ; i--) { - if( i != 0) { - value += split[i]+"/"; - }else { - value += split[i]; - } - - } - return value; - } -} +/** + * Copyright © 2012-2014 JeeSite All rights reserved. + */ +package com.nis.util; + +import java.io.UnsupportedEncodingException; +import java.util.List; +import java.util.Locale; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.commons.lang3.StringEscapeUtils; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.servlet.LocaleResolver; + +import com.ckfinder.connector.ServletContextFactory; +import com.google.common.collect.Lists; +import com.nis.web.service.SpringContextHolder; + +/** + * 字符串工具类, 继承org.apache.commons.lang3.StringUtils类 + * + * @author ThinkGem + * @version 2013-05-22 + */ +public class StringUtils extends org.apache.commons.lang3.StringUtils { + + private static final char SEPARATOR = '_'; + private static final String CHARSET_NAME = "UTF-8"; + public static final String HASH_ALGORITHM = "SHA-1"; + public static final int HASH_INTERATIONS = 1024; + public static final int SALT_SIZE = 8; + + /** + * 转换为字节数组 + * + * @param str + * @return + */ + public static byte[] getBytes(String str) { + if (str != null) { + try { + return str.getBytes(CHARSET_NAME); + } catch (UnsupportedEncodingException e) { + return null; + } + } else { + return null; + } + } + + /** + * 转换为字节数组 + * + * @param str + * @return + */ + public static String toString(byte[] bytes) { + try { + return new String(bytes, CHARSET_NAME); + } catch (UnsupportedEncodingException e) { + return EMPTY; + } + } + + /** + * 是否包含字符串 + * + * @param str + * 验证字符串 + * @param strs + * 字符串组 + * @return 包含返回true + */ + public static boolean inString(String str, String... strs) { + if (str != null) { + for (String s : strs) { + if (str.equals(trim(s))) { + return true; + } + } + } + return false; + } + + /** + * 替换掉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; + } + + /** + * 替换为手机识别的HTML,去掉样式及属性,保留回车。 + * + * @param html + * @return + */ + public static String replaceMobileHtml(String html) { + if (html == null) { + return ""; + } + return html.replaceAll("<([a-z]+?)\\s+?.*?>", "<$1>"); + } + + /** + * 替换为手机识别的HTML,去掉样式及属性,保留回车。 + * + * @param txt + * @return + */ + public static String toHtml(String txt) { + if (txt == null) { + return ""; + } + return replace(replace(Encodes.escapeHtml(txt), "\n", "
"), "\t", "    "); + } + + /** + * 缩略字符串(不区分中英文字符) + * + * @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 ""; + } + + public static String abbr2(String param, int length) { + if (param == null) { + return ""; + } + StringBuffer result = new StringBuffer(); + int n = 0; + char temp; + boolean isCode = false; // 是不是HTML代码 + boolean isHTML = false; // 是不是HTML特殊字符,如  + for (int i = 0; i < param.length(); i++) { + temp = param.charAt(i); + if (temp == '<') { + isCode = true; + } else if (temp == '&') { + isHTML = true; + } else if (temp == '>' && isCode) { + n = n - 1; + isCode = false; + } else if (temp == ';' && isHTML) { + isHTML = false; + } + try { + if (!isCode && !isHTML) { + n += String.valueOf(temp).getBytes("GBK").length; + } + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + + if (n <= length - 3) { + result.append(temp); + } else { + result.append("..."); + break; + } + } + // 取出截取字符串中的HTML标记 + String temp_result = result.toString().replaceAll("(>)[^<>]*(]*/?>", + ""); + // 去掉成对的HTML标记 + temp_result = temp_result.replaceAll("<([a-zA-Z]+)[^<>]*>(.*?)", "$2"); + // 用正则表达式取出标记 + Pattern p = Pattern.compile("<([a-zA-Z]+)[^<>]*>"); + Matcher m = p.matcher(temp_result); + List endHTML = Lists.newArrayList(); + while (m.find()) { + endHTML.add(m.group(1)); + } + // 补全不成对的HTML标记 + for (int i = endHTML.size() - 1; i >= 0; i--) { + result.append(""); + } + return result.toString(); + } + + /** + * 转换为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(); + } + + /** + * 获得i18n字符串 + */ + public static String getMessage(String code, Object[] args) { + LocaleResolver localLocaleResolver = (LocaleResolver) SpringContextHolder.getBean(LocaleResolver.class); + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()) + .getRequest(); + Locale localLocale = localLocaleResolver.resolveLocale(request); + return SpringContextHolder.getApplicationContext().getMessage(code, args, localLocale); + } + + /** + * 获得用户远程地址 + */ + public static String getRemoteAddr(HttpServletRequest request) { + String remoteAddr = request.getHeader("X-Real-IP"); + if (isBlank(remoteAddr)) { + remoteAddr = request.getHeader("X-Forwarded-For"); + } else if (isBlank(remoteAddr)) { + remoteAddr = request.getHeader("Proxy-Client-IP"); + } else if (isBlank(remoteAddr)) { + remoteAddr = request.getHeader("WL-Proxy-Client-IP"); + } + return remoteAddr != null ? remoteAddr : request.getRemoteAddr(); + } + + /** + * 驼峰命名法工具 + * + * @return toCamelCase("hello_world") == "helloWorld" + * toCapitalizeCamelCase("hello_world") == "HelloWorld" + * toUnderScoreCase("helloWorld") = "hello_world" + */ + public static String toCamelCase(String s) { + if (s == null) { + return null; + } + + s = s.toLowerCase(); + + StringBuilder sb = new StringBuilder(s.length()); + boolean upperCase = false; + for (int i = 0; i < s.length(); i++) { + char c = s.charAt(i); + + if (c == SEPARATOR) { + upperCase = true; + } else if (upperCase) { + sb.append(Character.toUpperCase(c)); + upperCase = false; + } else { + sb.append(c); + } + } + + return sb.toString(); + } + + /** + * 驼峰命名法工具 + * + * @return toCamelCase("hello_world") == "helloWorld" + * toCapitalizeCamelCase("hello_world") == "HelloWorld" + * toUnderScoreCase("helloWorld") = "hello_world" + */ + public static String toCapitalizeCamelCase(String s) { + if (s == null) { + return null; + } + s = toCamelCase(s); + return s.substring(0, 1).toUpperCase() + s.substring(1); + } + + /** + * 驼峰命名法工具 + * + * @return toCamelCase("hello_world") == "helloWorld" + * toCapitalizeCamelCase("hello_world") == "HelloWorld" + * toUnderScoreCase("helloWorld") = "hello_world" + */ + public static String toUnderScoreCase(String s) { + if (s == null) { + return null; + } + + StringBuilder sb = new StringBuilder(); + boolean upperCase = false; + for (int i = 0; i < s.length(); i++) { + char c = s.charAt(i); + + boolean nextUpperCase = true; + + if (i < (s.length() - 1)) { + nextUpperCase = Character.isUpperCase(s.charAt(i + 1)); + } + + if ((i > 0) && Character.isUpperCase(c)) { + if (!upperCase || !nextUpperCase) { + sb.append(SEPARATOR); + } + upperCase = true; + } else { + upperCase = false; + } + + sb.append(Character.toLowerCase(c)); + } + + return sb.toString(); + } + + /** + * 如果不为空,则设置值 + * + * @param target + * @param source + */ + public static void setValueIfNotBlank(String target, String source) { + if (isNotBlank(source)) { + target = source; + } + } + + /** + * 转换为JS获取对象值,生成三目运算返回结果 + * + * @param objectString + * 对象串 例如:row.user.id + * 返回:!row?'':!row.user?'':!row.user.id?'':row.user.id + */ + public static String jsGetVal(String objectString) { + StringBuilder result = new StringBuilder(); + StringBuilder val = new StringBuilder(); + String[] vals = split(objectString, "."); + for (int i = 0; i < vals.length; i++) { + val.append("." + vals[i]); + result.append("!" + (val.substring(1)) + "?'':"); + } + result.append(val.substring(1)); + return result.toString(); + } + + /** + * 生成安全的密码,生成随机的16位salt并经过1024次 sha-1 hash + */ + public static String entryptPassword(String plainPassword) { + byte[] salt = Digests.generateSalt(SALT_SIZE); + byte[] hashPassword = Digests.sha1(plainPassword.getBytes(), salt, HASH_INTERATIONS); + return Encodes.encodeHex(salt) + Encodes.encodeHex(hashPassword); + } + + /** + * 验证密码 + * + * @param plainPassword + * 明文密码 + * @param password + * 密文密码 + * @return 验证成功返回true + */ + public static boolean validatePassword(String plainPassword, String password) { + byte[] salt = Encodes.decodeHex(password.substring(0, 16)); + byte[] hashPassword = Digests.sha1(plainPassword.getBytes(), salt, HASH_INTERATIONS); + return password.equals(Encodes.encodeHex(salt) + Encodes.encodeHex(hashPassword)); + } + + /** + * 获取上传文件的根目录 + * + * @return + */ + public static String getUserfilesBaseDir() { + String dir = Configurations.getStringProperty("userfiles.basedir", ""); + try { + if (StringUtils.isBlank(dir)) { + dir = ServletContextFactory.getServletContext().getRealPath("/"); + } else { + dir = ServletContextFactory.getServletContext().getRealPath("/") + dir; + } + } catch (Exception e) { + return ""; + } + + if (!dir.endsWith("/")) { + dir += "/"; + } + return dir; + } + + /** + * + *

+ * 判断字符串是否为空. 为空条件:全角\半角\tab 等没有实际意义的字符. + * 具体参看{@link Character#isWhitespace(char)}对空格的定义. + *

+ * + *
+	* StringUtils.isBlank("  ") = true 为半角空格
+	* StringUtils.isBlank("  ") = true 为全角空格
+	* StringUtils.isBlank("	") = true 为tab键
+	 * 
+ * + * @param str + * 字符串 + * @return true 字符串为空 ,false 不为空 + */ + public static boolean strIsBlank(String str) { + int strLen; + if (str == null || (strLen = str.length()) == 0) { + return true; + } + for (int i = 0; i < strLen; i++) { + if ((Character.isWhitespace(str.charAt(i)) == false)) { + return false; + } + } + return true; + } + + /** + * 截取转义页面字符串 + * @param str + * @param len + * @return + */ + public static String stringFormat(String str,int len){ + if(str==null||str.trim().equals("")||str.trim().equals("null")){ + return ""; + } + + if(len!=-1){ + try { + StringBuilder sb = new StringBuilder(); + int currentLength = 0; + for (char c : str.toCharArray()) { + currentLength += String.valueOf(c).getBytes("GBK").length; + if (currentLength <= len - 3) { + sb.append(c); + } else { + sb.append("..."); + break; + } + } + return Encodes.escapeHtml(sb.toString()); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } + return str; + } + + public static String revertStr(String str,String regex){ + String[] split = str.split(regex); + String value = ""; + for (int i = split.length-1; i >= 0 ; i--) { + if( i != 0) { + value += split[i]+"/"; + }else { + value += split[i]; + } + + } + return value; + } +}