java处理字符串工具类

package com.joinsoft.service.utils;


import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;


/**
 * 处理字符串的工具类。
 */

public class StringUtils {



    /**
     *
     * 对string 进行trim,如果值为null返回"",其他情况string.trim()。
     * @param str    待处理的字符串
     * @return
     *
     * @author admin
     * @since 2014年8月14日下午2:17:35
     */
    public static String clean(String str) {
        return org.apache.commons.lang3.StringUtils.trimToEmpty(str);
    }

    /**
     *
     * 返回str.trim(),如果值为null或string.trim()为"",则返回指定的默认值。
     * @param str
     * @param defaultValue 默认值
     * @return
     *
     * @author tyr
     * @since 2014-9-22下午4:19:27
     */
    public static String cleanDefault(String str, int defaultValue) {
        if (isEmpty(clean(str))) {
            return String.valueOf(defaultValue);
        }else {
            return clean(str);
        }
    }

    public static String cleanDefault(String str, String defaultValue) {
        if (isEmpty(clean(str))) {
            return String.valueOf(defaultValue);
        }else {
            return clean(str);
        }
    }

    /**
     *
     * 判断字符串是否为空。
     * <p>严格判断字符串是否为空。为空的标准  str==null or str.length()==0</p>
     * @param str
     * @return
     *
     * @author admin
     * @since 2014年8月14日下午2:18:52
     */
    public static boolean isEmpty(String str) {
        return org.apache.commons.lang3.StringUtils.isEmpty(str);
    }

    /**
     *
     * 判断字符串是否不为空。
     * <p>严格判断字符串是否不为空。不为空的标准  str!=null or str.length()!=0</p>
     * @param str
     * @return
     *
     * @author admin
     * @since 2014年8月14日下午2:18:52
     */
    public static boolean isNotEmpty(String str) {
        if(equals(str,"null")){
            return false;
        }
        return !isEmpty(str);
    }

    /**
     * 字符串比对方法,两个比较的字符串都能为空,不会报空指针异常
     * @param str1
     * @param str2
     * @return
     */
    public static boolean equals(String str1,String str2){
        return org.apache.commons.lang3.StringUtils.equals(str1,str2);
    }

    /**
     *
     * 判断字符串是否为空。
     * <p>宽松判断字符串是否为空。为空的标准  [str==null or str.length()==0 && 空格]</p>
     * @param str
     * @return
     *
     * @author admin
     * @since 2014年8月14日下午2:19:32
     */
    public static boolean isBlank(String str) {
    	if("null".equals(str)){//add by zfx
    		return true;
    	}
        return org.apache.commons.lang3.StringUtils.isBlank(str);
    }

    /**
     *
     * 字符串转换为大写形式。
     * @param str
     * @return
     *
     * @author admin
     * @since 2014年8月14日下午2:21:24
     */
    public static String upperCase(String str) {
        return org.apache.commons.lang3.StringUtils.upperCase(str);
    }

    /**
     *
     * 字符串转换为小写形式。
     * @param str
     * @return
     *
     * @author admin
     * @since 2014年8月14日下午2:21:47
     */
    public static String lowerCase(String str) {
        return org.apache.commons.lang3.StringUtils.lowerCase(str);
    }

    /**
     *
     *  对字符串进行反转。
     * @param str
     * @return
     *
     * @author admin
     * @since 2014年8月14日下午2:22:09
     */
    public static String reverse(String str) {
        return org.apache.commons.lang3.StringUtils.reverse(str);
    }

    /**
     *
     * 在字符串中移除指定的字符串  (eg: remove("abc","c")-->"ab")。
     * @param str      待处理的字符串
     * @param remove   需要移除的字符串
     * @return         处理后的字符串
     *
     * @author admin
     * @since 2014年8月14日下午2:22:30
     */
    public static String remove(String str, String remove) {
        return org.apache.commons.lang3.StringUtils.remove(str, remove);
    }

    /**
     *
     * 判断字符串每位是否为数值 [eg:"abc"-->false "a13"-->false "123"-->true "12.11"-->false]。
     * @param str
     * @return
     *
     * @author
     * @since 2014年8月14日下午2:23:32
     */
    public static boolean isNumeric(String str) {
        return org.apache.commons.lang3.StringUtils.isNumeric(str);
    }

    /**
     *
     * 用指定的字符串补齐足够的长度。
     * <p>%方法详述(简单方法可不必)%</p>
     * @param str       需要补齐的字符串
     * @param addstr    补齐字符
     * @param lenstr    补齐长度
     * @return
     *
     * @author admin
     * @since 2014年8月14日下午2:24:59
     */
    public static String addZero(String str,String addstr, int lenstr) {
        String value = clean(str);
        while (value.length() < lenstr) {
            value = addstr + value;
        }
        return value;
    }

    /**
     *
     * 截取字符串左边的零。
     * @param teststr
     * @return
     *
     * @author admin
     * @since 2014年8月14日下午2:25:49
     */
    public static String removeZero(String teststr) {
        String str = clean(teststr);
        if ("".equals(str)) {
            return "";
        }
        String tmpStr = str.substring(0, 1);
        while ("0".equals(tmpStr) && str.length() > 0) {
            str = str.substring(1, str.length());
            tmpStr = str.substring(0, 1);
        }
        return str;
    }

    /**
     *
     * 将str用多个分隔符进行切分。
     * <p>将str用多个分隔符进行切分
     *    示例:StringTokenizerUtils.split("1,2;3 4"," ,;")
     *    返回: ["1","2","3","4"]
     * </p>
     * @param str
     * @param seperators
     * @return
     *
     * @author admin
     * @since 2014年8月14日下午2:26:21
     */
    public static String[] split(String str, String seperators) {
        StringTokenizer tokenlizer = new StringTokenizer(str, seperators);
        List<Object> result = new ArrayList<Object>();
        while (tokenlizer.hasMoreElements()) {
            Object s = tokenlizer.nextElement();
            result.add(s);
        }
        return (String[]) result.toArray(new String[result.size()]);
    }



    /**
     *
     * 输入一个字符串,判断是否为空,如果为空设定默认值。
     * <p>
     *     输入一个字符串,判断是否为空(为空的标准 str==null or str.length()==0 or 字符串为空格
     * </p>
     * @param str
     * @param defaultstr
     * @return
     *
     * @author admin
     * @since 2014年8月14日下午2:28:09
     */

	public static String defaultIfBlank(String str, String defaultstr) {
		return org.apache.commons.lang3.StringUtils.defaultIfBlank(str,
				defaultstr);
	}



    /**
     *
     * 把数组中的值 转换成sql in需要的形式 ["a","b"]--->('a','b')。
     * @param str
     * @return
     *
     * @author
     * @since 2014年8月14日下午2:38:40
     */
    public static String toInString(String[] str){
        StringBuffer buffer=new StringBuffer();
        buffer.append("(");
        for (int i = 0; i < str.length-1; i++) {
            buffer.append("'"+str[i]+"',");
        }
        buffer.append("'"+str[str.length-1]+"'");
        buffer.append(")");
        return buffer.toString();
    }

    /**
     *
     * 功能: 对字符串进行前置补0。
     * <p>%方法详述(简单方法可不必)%</p>
     * @param str
     * @param lenstr
     * @return
     *
     * @author
     * @since 2014-9-5下午4:25:25
     */
    public static String addZero(String str, int lenstr) {
        String value = clean(str);
        while (value.length() < lenstr) {
            value = "0" + value;
        }
        return value;
    }

    /**
     *
     * 功能: 返回不以科学计算法为显示的double值
     *
     * @return
     *
     * 作者:仝玉锐
     */
    public static String getFomartDouble(double value) {
        double out = 0.00;
        DecimalFormat df = new DecimalFormat("0.00");
        if (StringUtils.isEmpty(value + "")) {
            out = 0d;
        } else {
            out = new Double(value);
        }
        String str = df.format(out);
        return str;
    }
    public static String getFomartDouble(String str) {
        double out = 0.00;
        if(StringUtils.isEmpty(str)){
            out = 0d;
        } else {
            out = new Double(Double.parseDouble(str));
        }
        return  getFomartDouble(out);

    }
    /**
     * 通过数组拼接数据项当做条件进行查询,
     * 返回值  in('','');
     * @param dataString 条件
     * @param columnName 字段名称
     * @return
     *
     * @author 杨慕孔
     * @since 2018年8月17日上午9:40:58
     */
    public static String getInCondition(String[] dataString,String columnName){
    	String str = "";
    	if(dataString == null || columnName == null ||"".equals(columnName)) return null;
    	if(dataString != null && dataString.length>0){
    		str = columnName + " in(";
    		for (int i = 0; i < dataString.length; i++) {
    					str +="'"+dataString[i]+"',";
    		}
    		str = str.substring(0,str.length()-1);
    		str += ")";
    	}
    	return str;
    }

    /***
	 * FUNCTION: 去掉最后一个字符
	 *
	 * @param
	 *
	 * @version: 2012-12-14
	 * **/
	public static String removeLastStr(String sourceStr){
		if(!StringUtils.isBlank(sourceStr)){
			sourceStr = sourceStr.substring(0, sourceStr.length()-1);
			return sourceStr;
		}
		return null;
	}

	/**
	 * 将数组转化为list
	 *
	 * @param ids 被转的字符串
	 * @param splitStr 分隔符
	 * @return
	 *
	 * @author 高东朋
	 * @since 2018年9月27日下午2:29:05
	 */
	public static List<String> strTransList(String ids, String splitStr) {
		if(!StringUtils.isBlank(ids)){
			List<String> idList = new ArrayList<String>();
			String[] idArr = ids.split(splitStr);
			if(idArr != null && idArr.length > 0){
				for(int t=0;t<idArr.length;t++){
					idList.add(idArr[t]);
				}
			}
			return idList;
		}
		return null;
	}


	/**
     * 生成指定位数的随机数字字符串
     * @param length
     * @return str
     * 作者: 李伟国
     */
    public static String createRandomNumber(int length){
    	String str = "";
    	while(str.length() < length){
    		str += Math.round(Math.random()*10);
    	}
    	return str;
    }
    /**
     * 方法名:subStrByByteLen <br>
     * 功能描述:通过字节长度截取字符串(截取字符串长度<=字节长度)
     *
     * @param text  待截取文本
     * @param length    截取字节长度
     * @param encode    字符编码
     * @return java.lang.String
     *
     * @author dc
     * @date 2019/11/4
     */
    public static String subStrByByteLen(String text, int length, String encode)
            throws UnsupportedEncodingException {
        if (text == null) {
            return null;
        }
        StringBuilder sb = new StringBuilder();
        int currentLength = 0;
        for (char c : text.toCharArray()) {
            currentLength += String.valueOf(c).getBytes(encode).length;
            if (currentLength <= length) {
                sb.append(c);
            } else {
                break;
            }
        }
        return sb.toString();
    }

    /**
     * 方法名:splitStrByByteLen <br>
     * 功能描述:通过字节长度切分字符串(分割的字符串长度<=字节长度)
     *
     * @param text  待分割文本
     * @param length    分割字节长度
     * @param encode    字符编码
     * @return java.util.List<java.lang.String>
     *
     * @author dc
     * @date 2019/11/4
     */
    public static List<String> splitStrByByteLen(String text, int length, String encode)
            throws UnsupportedEncodingException {
        if (text == null) {
            return null;
        }
        String content = new String(text);
        List<String> list = new ArrayList<>();
        while(content.length() > 0) {
            String s = subStrByByteLen(content, length, encode);
            list.add(s);
            content = content.substring(s.length());
        }
        return list;
    }

    /**
     * 方法名:splitStr <br>
     * 功能描述:通过字符长度切分字符串
     *
     * @param text
     * @param length
     * @return java.util.List<java.lang.String>
     *
     * @author dc
     * @date 2019/11/28
     */
    public static List<String> splitStr(String text, int length) {
        if (text == null) {
            return null;
        }
        int size = text.length() / length;
        if (text.length() % length != 0) {
            size += 1;
        }
        List<String> list = new ArrayList<String>();
        for (int index = 0; index < size; index++) {
            String childStr = substring(text, index * length,
                    (index + 1) * length);
            list.add(childStr);
        }
        return list;
    }

    /**
     * 方法名:substring <br>
     * 功能描述:
     *
     * @param str
     * @param beginIndex
     * @param endIndex
     * @return java.lang.String
     *
     * @author dc
     * @date 2019/11/28
     */
    public static String substring(String str, int beginIndex, int endIndex) {
        if (beginIndex > str.length()){
            return null;
        }
        if (endIndex > str.length()) {
            return str.substring(beginIndex, str.length());
        } else {
            return str.substring(beginIndex, endIndex);
        }
    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值