java字符串处理工具

/** */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中格式化下即可使用!如果您觉得对您有用,抢关注下愚人,会定期更新相关内容

文件来源/原创

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容