/** */package com.wwls.common.utils;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.google.common.collect.Lists;/** * 字符串工具类, 继承org.apache.commons.lang3.StringUtils类 * @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"; /** * 转换为字节数组 * @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("(>)[^<>]*(?)","$1$2");// 去掉不需要结素标记的HTML标记temp_result = temp_result.replaceAll("","");// 去掉成对的HTML标记temp_result = temp_result.replaceAll("<([a-zA-Z]+)[^<>]*>(.*?)\\1","$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;
}
}
}
文本编译器有问题,赋值下来后放到eclipse中格式化下即可使用!如果您觉得对您有用,抢关注下愚人,会定期更新相关内容
文件来源/原创