String工具类

package com.huawei.bfm.common.util;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.builder.ToStringBuilder;

/**
 *  字符串处理通用工具类
 * 
 * @author tjw
 * @date [Nov 29, 2012]
 * @version [NGSDP LB5213]
 */
public final class StringUtils
{
    /** 空字符串 */
    public static final String EMPTY = "";
    
    // SQL关键字,匹配所有字符
    private static final String SQL_KEYWORD_STRING = "%";
    
    // SQL关键字,匹配单个字符
    private static final String SQL_KEYWORD_CHAR = "_";
    
    // SQL关键字,转义符
    private static final String SQL_KEYWORD_ESCAPE = "\\";
    
    // 默认join 分割符
    private static final String DEFULT_JOIN_SEPARATOR = ",";
    
    // 默认封装 标示符
    private static final String DEFULT_WRAP_FLAG = "'";
    
    private StringUtils()
    {
    }
    
    /**
     * 截取目标字符串后面的字符串,以第一个开始截取
     * 
     * @param str
     *            待处理字符串
     * @param separator
     *            分隔符号
     * @return 处理后的字符串
     */
    public static String substringAfter(String str, String separator)
    {
        if (contains(str, separator))
        {
            return org.apache.commons.lang.StringUtils.substringAfter(str, separator);
        }
        return str;
    }
    
    /**
     * 截取目标字符串后面的字符串,以最后一个开始截取
     * 
     * @param str
     *            待处理字符串
     * @param separator
     *            分隔符号
     * @return 处理后的字符串
     */
    public static String substringAfterLast(String str, String separator)
    {
        if (contains(str, separator))
        {
            return org.apache.commons.lang.StringUtils.substringAfterLast(str, separator);
        }
        return str;
    }
    
    /**
     * 去除字符串前缀
     * 
     * @param str
     *            待处理字符串
     * @param prefix
     *            前缀
     * @return 处理完的字符串
     */
    public static String removePrefix(String str, String prefix)
    {
        if (isNotBlank(str, prefix))
        {
            if (str.startsWith(prefix))
            {
                return str.substring(prefix.length());
            }
        }
        return str;
    }
    
    /**
     * 添加字符串前缀
     * 
     * @param str
     *            待处理字符串
     * @param prefix
     *            前缀
     * @return 处理完的字符串
     */
    public static String appendPrefix(String str, String prefix)
    {
        if (isNotBlank(str, prefix))
        {
            if (!str.startsWith(prefix))
            {
                return prefix + str;
            }
        }
        return str;
    }
    
    /**
     * 去除字符串后缀
     * 
     * @param str
     *            待处理字符串
     * @param subfix
     *            后缀
     * @return 处理完的字符串
     */
    public static String removeSubfix(String str, String subfix)
    {
        if (isNotBlank(str, subfix))
        {
            if (str.endsWith(subfix))
            {
                return str.substring(0, str.length() - subfix.length());
            }
        }
        return str;
    }
    
    /**
     * 添加字符串后缀
     * 
     * @param str
     *            待处理字符串
     * @param subfix
     *            后缀
     * @return 处理完的字符串
     */
    public static String appendSubfix(String str, String subfix)
    {
        if (isNotBlank(str, subfix))
        {
            if (!str.endsWith(subfix))
            {
                return str + subfix;
            }
        }
        return str;
    }
    
    /**
     * 首字母转换成大写
     * 
     * @param str
     *            待转换字符串
     * @return 转换后字符串
     */
    public static String capitalize(String str)
    {
        return org.apache.commons.lang.StringUtils.capitalize(str);
    }
    
    /**
     * 目标字符串是否包含字串
     * 
     * @param str
     *            目标字符串
     * @param searchStr
     *            子字符串
     * @return 目标字符串是否包含字串
     */
    public static boolean contains(String str, String searchStr)
    {
        return org.apache.commons.lang.StringUtils.contains(str, searchStr);
    }
    
    /**
     * 默认字符串
     * 
     * 如果目标字符串为 null 返回 空串,否则返回原始字符串
     * 
     * @param str
     *            目标字符串
     * @return 默认字符串
     */
    public static String defaultString(String str)
    {
        return org.apache.commons.lang.StringUtils.defaultString(str);
    }
    
    /**
     * 默认字符串
     * 
     * 如果目标字符串为 null 返回 空串,否则返回原始字符串
     * 
     * @param str
     *            目标字符串
     * @param defaultStr
     *            默认字符串
     * @return 默认字符串
     */
    public static String defaultString(String str, String defaultStr)
    {
        return org.apache.commons.lang.StringUtils.defaultString(str, defaultStr);
    }
    
    /**
     * 字符串比对是否相同,
     * 
     * @param str
     *            待比较字符串
     * @param strs
     *            待比较字符串数组 ,任何一个字符串与目标字符串匹配成功则匹配成功
     * @return 比较结果
     */
    public static boolean equals(String str, String... strs)
    {
        
        if (ArrayUtils.isNotEmpty(strs))
        {
            for (String s : strs)
            {
                if (org.apache.commons.lang.StringUtils.equals(s, str))
                {
                    return true;
                }
            }
            return false;
        }
        else
        {
            return null == str;
        }
        
    }
    
    /**
     * SQL编码
     * 
     * <pre>
     * 将 \ _ % 等特殊字符前补加\转意符,
     * </pre>
     * 
     * @param str
     *            未编码字符串
     * @return 编码后字符串
     */
    public static String escapeSql(String str)
    {
        if (isNotBlank(str))
        {
            str = str.replace(SQL_KEYWORD_ESCAPE, SQL_KEYWORD_ESCAPE + SQL_KEYWORD_ESCAPE);
            str = str.replace(SQL_KEYWORD_CHAR, SQL_KEYWORD_ESCAPE + SQL_KEYWORD_CHAR);
            str = str.replace(SQL_KEYWORD_STRING, SQL_KEYWORD_ESCAPE + SQL_KEYWORD_STRING);
            
        }
        return str;
    }
    
    /**
     * 获取模糊查询字符串
     * 
     * <pre>
     * 字符串前后添加 % 符号
     * </pre>
     * 
     * @param str
     *            待模糊查询字符串
     * @return 拼接相关模糊查询标识的字符串
     */
    public static String getFuzzyString(String str)
    {
        if (isNotBlank(str))
        {
            str = SQL_KEYWORD_STRING + str + SQL_KEYWORD_STRING;
        }
        return str;
    }
    
    /**
     * 获取模糊查询字符串,特殊字符进行转义
     * 
     * 
     * <pre>
     * 1、将 \ _ % 等特殊字符前补加\转意符,
     * 2、字符串前后添加 % 符号
     * </pre>
     * 
     * @param str
     *            待模糊查询字符串
     * @return 拼接相关模糊查询标识的字符串
     */
    public static String getFuzzyStringWithEscape(String str)
    {
        if (isNotBlank(str))
        {
            return getFuzzyString(escapeSql(str));
        }
        return null;
    }
    
    /**
     * 获取被检索字符串在目标字符串中的索引的位置
     * 
     * @param str
     *            目标字符串
     * @param searchChars
     *            被检索字符串
     * @return 索引的位置
     */
    public static int indexOfAny(String str, String searchChars)
    {
        return org.apache.commons.lang.StringUtils.indexOfAny(str, searchChars);
    }
    
    /**
     * 获取被检索字符串在目标字符串中的索引的位置
     * 
     * @param str
     *            目标字符串
     * @param searchChars
     *            被检索字符串
     * @return 索引的位置
     */
    public static int indexOfAny(String str, String[] searchChars)
    {
        return org.apache.commons.lang.StringUtils.indexOfAny(str, searchChars);
    }
    
    /**
     * 是否为空
     * 
     * @param str
     *            待校验字符串
     * @return 是否为空
     */
    public static boolean isBlank(String str)
    {
        return org.apache.commons.lang.StringUtils.isBlank(str);
    }
    
    /**
     * 判断字符串指定范围的字符是否全部是数字。
     * 
     * @param str
     *            输入的字符串
     * @param begin
     *            起始下标,包括这个字符
     * @param end
     *            结束下标,不包括这个字符
     * @return 如果范围内的字符都是数字返回true,否则返回false
     */
    public static boolean isDigitInRange(String str, int begin, int end)
    {
        if (isBlank(str))
        {
            return false;
        }
        if (begin < 0 || end < 0 || begin >= end)
        {
            return false;
        }
        if (str.length() <= end)
        {
            return false;
        }
        for (int i = begin; i < end; i++)
        {
            if (!Character.isDigit(str.charAt(i)))
            {
                return false;
            }
        }
        return true;
    }
    
    /**
     * 是否为空
     * 
     * @param str
     *            待校验字符串
     * @return 是否为空
     */
    public static boolean isEmpty(String str)
    {
        return org.apache.commons.lang.StringUtils.isEmpty(str);
    }
    
    /**
     * 是否非空
     * 
     * 任何一个字符串为空,将范围false
     * 
     * @param strs
     *            待校验字符串
     * @return 是否非空
     */
    public static boolean isNotBlank(String... strs)
    {
        if (null == strs)
        {
            return false;
        }
        
        for (String str : strs)
        {
            if (!org.apache.commons.lang.StringUtils.isNotBlank(str))
            {
                return false;
            }
        }
        return true;
    }
    
    /**
     * 是否非空
     * 
     * 任何一个字符串为空,将范围false
     * 
     * @param strs
     *            待校验字符串
     * @return 是否非空
     */
    public static boolean isNotEmpty(String... strs)
    {
        if (null == strs)
        {
            return false;
        }
        for (String str : strs)
        {
            if (!org.apache.commons.lang.StringUtils.isNotEmpty(str))
            {
                return false;
            }
        }
        return true;
    }
    
    /**
     * 是否是数字
     * 
     * @param str
     *            目标字符串
     * @return 是否是数字
     */
    public static boolean isNumeric(String str)
    {
        return org.apache.commons.lang.StringUtils.isNumeric(str);
    }
    
    /**
     * 使用 , 拼接集合
     * 
     * @param col
     *            待拼接集合对象
     * @return 拼接后的字符串
     */
    public static String join(Collection<?> col)
    {
        return join(col, DEFULT_JOIN_SEPARATOR);
    }
    
    /**
     * 拼接集合数据
     * 
     * @param col
     *            待拼接集合
     * @param separator
     *            分隔符
     * @return 拼接后的集合数据
     */
    public static String join(Collection<?> col, String separator)
    {
        return org.apache.commons.lang.StringUtils.join(col, separator);
    }
    
    /**
     * 拼接集合数据
     * 
     * @param strs
     *            待拼接集合
     * @param separator
     *            分隔符
     * @return 拼接后的集合数据
     */
    public static String join(Object[] strs, String separator)
    {
        return org.apache.commons.lang.StringUtils.join(strs, separator);
    }
    
    /**
     * 左补齐字符串
     * 
     * @param str
     *            待补齐字符串
     * @param size
     *            字符串长度
     * @param padChar
     *            补齐字符
     * @return 补齐后字符串
     */
    public static String leftPad(String str, int size, char padChar)
    {
        return org.apache.commons.lang.StringUtils.leftPad(str, size, padChar);
    }
    
    /**
     * 左补齐字符串
     * 
     * @param str
     *            待补齐字符串
     * @param size
     *            字符串长度
     * @param padStr
     *            补齐字符
     * @return 补齐后字符串
     */
    public static String leftPad(String str, int size, String padStr)
    {
        return org.apache.commons.lang.StringUtils.leftPad(str, size, padStr);
    }
    
    /**
     * 转换成小写字母
     * 
     * @param str
     *            目标字符串
     * @return 转换成小写字母
     */
    public static String lowerCase(String str)
    {
        return org.apache.commons.lang.StringUtils.lowerCase(str);
    }
    
    /**
     * 分割字符串
     * 
     * @param str
     *            目标字符串
     * @param separator
     *            分隔符
     * @return 分割后的集合数据
     */
    public static String[] split(String str, char separator)
    {
        return org.apache.commons.lang.StringUtils.split(str, separator);
    }
    
    /**
     * 分割字符串
     * 
     * @param str
     *            目标字符串
     * @return 分割后的集合数据
     */
    public static String[] split(String str)
    {
        return org.apache.commons.lang.StringUtils.split(str);
    }
    
    /**
     * 分割字符串
     * 
     * @param str
     *            目标字符串
     * @param separator
     *            分隔符
     * @return 分割后的集合数据
     */
    public static String[] split(String str, String separator)
    {
        return org.apache.commons.lang.StringUtils.split(str, separator);
    }
    
    /**
     * 获取子串
     * 
     * @param str
     *            目标字符串
     * @param start
     *            起始索引
     * 
     * @return 子串
     */
    public static String substring(String str, int start)
    {
        return org.apache.commons.lang.StringUtils.substring(str, start);
    }
    
    /**
     * 获取子串
     * 
     * @param str
     *            目标字符串
     * @param start
     *            起始索引
     * @param end
     *            结束索引
     * 
     * @return 子串
     */
    public static String substring(String str, int start, int end)
    {
        return org.apache.commons.lang.StringUtils.substring(str, start, end);
    }
    
    /**
     * 转换成字符串
     * 
     * @param obj
     *            obj
     * @return String
     */
    public static String toString(Object obj)
    {
        return obj == null ? null : obj.toString();
    }
    
    /**
     * 去空格字符串
     * 
     * @param str
     *            目标字符串
     * @return 去空格后的字符串
     */
    public static String trim(String str)
    {
        return org.apache.commons.lang.StringUtils.trim(str);
    }
    
    /**
     * 去空格字符串,如果字符串为empty则返回null
     * 
     * @param str
     *            目标字符串
     * @return 去空格后的字符串
     */
    public static String trimToNull(String str)
    {
        return org.apache.commons.lang.StringUtils.trimToNull(str);
    }
    
    /**
     * 去空格字符串,如果字符串为empty则返回""
     * 
     * @param str
     *            目标字符串
     * @return 去空格后的字符串
     */
    public static String trimToEmpty(String str)
    {
        return org.apache.commons.lang.StringUtils.trimToEmpty(str);
    }
    
    /**
     * 转换成大写字母
     * 
     * @param str
     *            目标字符串
     * @return 转换成大写字母
     */
    public static String upperCase(String str)
    {
        return org.apache.commons.lang.StringUtils.upperCase(str);
    }
    
    /**
     * 使用单引号包装字符串
     * 
     * 
     * @param str
     *            str
     * @param flag
     *            flag
     * @return String
     */
    public static String warp(String str, String flag)
    {
        if (isBlank(flag))
        {
            flag = DEFULT_WRAP_FLAG;
        }
        
        StringBuilder sb = new StringBuilder();
        sb.append(flag).append(str).append(flag);
        return sb.toString();
    }
    
    /**
     * 截取字符串
     * 
     * @param str
     *            待截取字符串
     * @param len
     *            字符长度
     * @return 截取后的字符串
     */
    public static String left(String str, int len)
    {
        return org.apache.commons.lang.StringUtils.left(str, len);
    }
    
    /**
     * 字符串XML解码
     * 
     * @param str
     *            待解码字符串
     * @return 解码后字符串
     */
    public static String unescapeXml(String str)
    {
        return StringEscapeUtils.unescapeXml(str);
    }
    
    /**
     * 反射对象成String类型
     * 
     * @param obj
     *            对象
     * @return 反射后的字符串
     */
    public static String reflectionToString(Object obj)
    {
        return ToStringBuilder.reflectionToString(obj);
    }
    
    
    /**
     * 分割字符串
     * 
     * @param str
     *            目标字符串
     * @param separator
     *            分隔符
     * @return 分割后的集合数据
     */
    public static List<Long> splitToLongList(String str, String separator)
    {
        List<Long> list = new ArrayList<Long>();
        
        if (isNotEmpty(str))
        {
            String[] strs = split(str, separator);
            for (String s : strs)
            {
                list.add(NumberUtils.toLong(s));
            }
        }
        
        return list;
    }
}

 

posted @ 2013-12-04 10:35  quietStrength  阅读(683)  评论(0编辑  收藏  举报