字符串处理工具类

Posted chenpt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串处理工具类相关的知识,希望对你有一定的参考价值。

方便我们对字符串的操作

import org.apache.commons.lang.StringUtils;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 字符串处理工具类
 * Created  on 2018/7/3.
 *
 * @author wangzf
 */
public class StringUtil extends StringUtils {
    public static final Character TRUE_CHARACTER = ‘1‘;

    /**
     * 是否为真
     *
     * @param c 字符串
     * @return
     */
    public static boolean isTrue(Character c) {
        if (TRUE_CHARACTER.equals(c)) {
            return true;
        }
        return false;
    }

    /**
     * 是否为真
     *
     * @param s 字符
     * @return
     */
    public static boolean isTrue(String s) {
        if (TRUE_CHARACTER.equals(s)) {
            return true;
        }
        return false;
    }

    /**
     * 追加双引号
     *
     * @param str 字符
     * @return 追加后字符
     */
    public static String quote(String str) {
        return str == null ? null : (new StringBuilder(‘"‘)).append(str).append(‘"‘).toString();
    }

    /**
     * 追加单引号
     *
     * @param str 字符
     * @return 追加后字符
     */
    public static String singleQuote(String str) {
        return str == null ? null : (new StringBuilder("‘")).append(str).append("‘").toString();
    }


    /**
     * 替换文本
     *
     * @param text        处理文本
     * @param placeholder 占位符
     * @param parameters  替换参数
     * @return 替换后文本
     */
    public static String replace(String text, String placeholder, String[] parameters) {
        if (!StringUtils.isEmpty(text) && !StringUtils.isEmpty(placeholder) && parameters != null) {
            for (String parameter : parameters) {
                text = replaceOnce(text, placeholder, parameter);
            }
        }
        return text;
    }

    /**
     * 替换文本
     *
     * @param text        处理文本
     * @param placeholder 占位符
     * @param parameters  替换参数
     * @return 替换后文本
     */
    public static String replace(String text, String placeholder, List<String> parameters) {
        if (parameters != null && parameters.size() > 0) {
            return replace(text, placeholder, parameters.toArray(new String[parameters.size()]));
        }
        return text;
    }

    /**
     * @param str
     * @return
     */
    public static String replaceColonToDot(String str) {
        if (StringUtils.isEmpty(str))
            return str;
        return str.replaceAll(":", ".");
    }


    /**
     * 取得指定长度的数字字符组合
     *
     * @param length 长度
     * @return 数字字符
     */
    public static String getRandomChar(int length) {
        String val = "";
        Random random = new Random();
        for (int i = 0; i < length; i++) {
            // 输出字母还是数字
            String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";
            // 字符串
            if ("char".equalsIgnoreCase(charOrNum)) {
                // 取得大写字母还是小写字母
                int choice = random.nextInt(2) % 2 == 0 ? 65 : 97;
                val += (char) (choice + random.nextInt(26));
            } else if ("num".equalsIgnoreCase(charOrNum)) {
                // 数字
                val += String.valueOf(random.nextInt(10));
            }
        }
        return val;
    }

    /**
     * 解析参数
     *
     * @param str   字符串
     * @param regex 表达式
     * @return 解析后的参数列表
     * @throws Exception 异常
     */
    public static List<String> parseParams(String str, String regex) throws Exception {
        List<String> params = new ArrayList<String>();
        Matcher matcher = Pattern.compile(regex).matcher(str);
        while (matcher.find()) {
            params.add(matcher.group());
        }
        return params;
    }

    /**
     * 将字符串转换为数组
     *
     * @param str   字符串
     * @param regex 表达式
     * @return 解析后的参数列表
     * @throws Exception 异常
     */
    public static List<String> stringsToList(String str, String regex) throws Exception {
        List<String> params = new ArrayList<String>();
        String[] stringArray = str.split(regex);
        for (String s : stringArray) {
            params.add(s);
        }
        return params;
    }

    public static boolean isIn(String target, String... strings) {
        for (String str : strings) {
            if (target == str) {
                return true;
            }
        }
        return false;
    }

    public static boolean isEmpty(Object value) {
        if (value == null) return true;
        if (isEmpty(value.toString())) return true;
        return false;
    }

    public static boolean isEmpty(Collection collection) {
        return collection == null || collection.isEmpty();
    }

    public static boolean isEmpty(Map map) {
        return map == null || map.isEmpty();
    }

    /**
     * 去除空格
     *
     * @param str str
     * @return 去除后字符
     */
    public static String trimAll(String str) {
        if (str != null) {
            str = StringUtils.replace(str, " ", StringUtils.EMPTY);
        }
        return str != null ? str.trim() : null;
    }

    /**
     * 验证手机号码格式
     *
     * @param mobile
     * @return boolean
     */
    public static boolean isMobileNO(String mobile) {

        if (isEmpty(mobile)) {
            return false;
        }
        Pattern p = Pattern.compile("^[1][0-9]{10}$");//Pattern.compile("^((13[0-9])|(15[^4,\D])|(18[0,5-9]))\d{8}$");
        Matcher m = p.matcher(mobile);
        return m.matches();
    }

    /**
     * 使用正则对时间字符串的合法性进行校验
     *
     * @param dateStr 将要被校验合法性的时间字符串,格式:pattern
     *                <p>
     *                //日期格式yyyy
     *                PatternsDict.date_y= (d{4});
     *                //日期格式yyyy-mm
     *                PatternsDict.date_ym= (d{4})-(0d{1}|1[0-2]);
     *                //日期格式yyyy-mm-dd
     *                PatternsDict.date_ymd= (d{4})-(0d{1}|1[0-2])-(0d{1}|[12]d{1}|3[01]);
     *                //时间格式hh
     *                PatternsDict.time_h=(0d{1}|1d{1}|2[0-3]);
     *                //时间格式hh:mm
     *                PatternsDict.time_hm=(0d{1}|1d{1}|2[0-3]):([0-5]d{1});
     *                //时间格式hh:mm:ss
     *                PatternsDict.time_hms=(0d{1}|1d{1}|2[0-3]):[0-5]d{1}:([0-5]d{1});
     */
    public static boolean checkDateFormat(String dateStr, String patternStr) {

        if (StringUtil.isEmpty(dateStr) || StringUtil.isEmpty(patternStr)) {
            return false;
        }
        Pattern pattern = Pattern.compile(patternStr);
        Matcher matcher = pattern.matcher(dateStr);
        return matcher.matches();
    }

    public static String stringList2SplitedString(List<String> srcList, String patternStr) {
        StringBuilder target = new StringBuilder();
        if (null == srcList) {
            if (srcList.size() > 0) {
                if (srcList.size() <= 1) {
                    target.append(srcList.get(0));
                    return target.toString();
                } else {
                    for (String s : srcList) {
                        target.append(s);
                        target.append(patternStr);
                    }
                    return target.toString().substring(0, target.toString().length() - 1);
                }
            }
        }
        return null;
    }
}

  

以上是关于字符串处理工具类的主要内容,如果未能解决你的问题,请参考以下文章

处理XSS漏洞的工具类代码

Android - 将搜索传递给片段

CSP核心代码片段记录

日期工具类处理总结(全)

基于Java的简易表达式解析工具

StringHelper--封转自己的字符串工具类