zoukankan      html  css  js  c++  java
  • 字符串包含汉字、数字、字母等校验工具类

    import com.github.stuxuhai.jpinyin.PinyinFormat;
    import com.github.stuxuhai.jpinyin.PinyinHelper;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.util.StringUtils;
    
    import java.math.BigDecimal;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /**
     * @ClassName CharsUtil
     * @Author ZhangRF
     * @CreateDate 2020/12/19
     * @Decription 字符工具类
     */
    @Slf4j
    public class CharsUtil {
        public static String chinese = "[\u4e00-\u9fa5]";
    
        /**
         * 判断参数是否为字母
         *
         * @param s
         * @return
         */
        public static boolean isLetter(String s) {
            if (StringUtils.isEmpty(s)) {
                return false;
            }
    
            char c = s.charAt(0);
            try {
                int i = (int) c;
                if ((i >= 65 && i <= 90) || (i >= 97 && i <= 122)) {
                    return true;
                } else {
                    return false;
                }
            } catch (Exception e) {
                return false;
            }
        }
    
        /**
         * 判断参数是否为字母
         *
         * @param s
         * @return
         */
        public static boolean isLetterChar(String s) {
            char c = s.charAt(0);
            if (((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))) {
                return true;
            } else {
                return false;
            }
        }
    
        /**
         * 判断参数是否为数字
         *
         * @param str
         * @return
         */
        public static boolean isNums(String str) {
            for (int i = str.length(); --i >= 0; ) {
                if (!Character.isDigit(str.charAt(i))) {
                    return false;
                }
            }
            return true;
        }
    
    
        /**
         * 判断参数是否为数字
         *
         * @param str
         * @return
         */
        public static boolean isNumeric(String str) {
            Pattern pattern = Pattern.compile("[0-9]*");
            return pattern.matcher(str).matches();
        }
    
        /**
         * 判断参数是否是数据类型
         */
        public static boolean isNumber(String params) {
            try {
                BigDecimal bigDecimal = new BigDecimal(params);
                return true;
            } catch (Exception e) {
                return false;
            }
        }
    
        /**
         * 判断参数是否为数字
         *
         * @param str
         * @return
         */
        public static boolean isNum(String str) {
            for (int i = str.length(); --i >= 0; ) {
                int chr = str.charAt(i);
                if (chr < 48 || chr > 57)
                    return false;
            }
            return true;
        }
    
        /**
         * 判断一个字符是否全是汉字
         * PS:中文汉字的编码范围:[\u4e00-\u9fa5]
         *
         * @param str 需要判断的字符
         * @return 是汉字(true), 不是汉字(false)
         */
        public static boolean isChineseChar(String str) {
            return str.matches(chinese);
        }
    
        /**
         * 是否存在汉字
         *
         * @param str
         * @return
         */
        public static boolean isExistChar(String str) {
            Pattern p = Pattern.compile(chinese);
            Matcher m = p.matcher(String.valueOf(str));
            if (m.find()) {
                return true;
            }
            return false;
        }
    
        /***
         * @param str 源字符串
         * @param regex 正则表达式
         * @return 判断参数是否为汉字
         */
        public static boolean match(String str, String regex) {
            Pattern pattern = Pattern.compile(regex);
            Matcher matcher = pattern.matcher(str);
            return matcher.find();
        }
    
        /***
         * 将单个汉字转成拼音
         * @param hanzi
         * @return
         */
        private static String convertSingleHanzi2Pinyin(char hanzi) {
            if (StringUtil.isEmpty(hanzi)) {
                return "";
            }
    
            String[] res;
            StringBuffer sb = new StringBuffer();
            try {
                res = PinyinHelper.convertToPinyinArray(hanzi, PinyinFormat.WITHOUT_TONE);
                sb.append(res[0]);//对于多音字,只用第一个拼音
            } catch (Exception e) {
                e.printStackTrace();
                log.error("拼音转换错", e);
                return "";
            }
            return sb.toString();
        }
    
        /**
         * 获取汉字首字母及全拼
         *
         * @param params 汉字
         * @return
         */
        public static Map<String, String> convertHanzi2Pinyin(String params) {
    
            if (org.apache.commons.lang3.StringUtils.isEmpty(params)) {
                return null;
            }
            HashMap<String, String> vo = new HashMap<>(2);
            StringBuilder all = new StringBuilder();
            StringBuilder abbr = new StringBuilder();
            //是否为中文
            /*
             * ^[\u2E80-\u9FFF]+$ 匹配所有东亚区的语言
             * ^[\u4E00-\u9FFF]+$ 匹配简体和繁体
             * ^[\u4E00-\u9FA5]+$ 匹配简体
             */
            String regExp = "^[\u4E00-\u9FA5]+$";
    
            for (int i = 0; i < params.length(); i++) {
    
                char unit = params.charAt(i);
                //是汉字,则转拼音
                if (match(String.valueOf(unit), regExp)) {
                    String pinyin = convertSingleHanzi2Pinyin(unit);
                    char[] chars = pinyin.toCharArray();
                    for (char aChar : chars) {
                        all.append(aChar);
                    }
                    abbr.append(pinyin.charAt(0));
                } else {
                    all.append(unit);
                    abbr.append(unit);
                    vo.put("all", all.toString());
                    vo.put("abbr", abbr.toString());
                }
            }
    
            vo.put("all", all.toString());
            vo.put("abbr", abbr.toString());
            return vo;
        }
    
        /**
         * 转首字母
         *
         * @param params
         * @return
         */
        public static String convertInitial(String params) {
            Map<String, String> map = convertHanzi2Pinyin(params);
            return map.get("abbr");
        }
  • 相关阅读:
    Integer和Integer常量池
    Spring中常用的23中设计模式
    GitHub 简单教程
    IDEA 中用好 Lombok,撸码效率至少提升5倍!
    Intellij IDEA中Mybatis Mapper自动注入警告的6种解决方案
    ROS常用命令和VIM常用命令
    ROS运行
    VINS-Mono运行
    环境配置相关
    C89标准和C99标准C11标准的区别
  • 原文地址:https://www.cnblogs.com/zhangrongfei/p/15667171.html
Copyright © 2011-2022 走看看