• JAVA 判断字符长度


    /**
         * 判断姓名字符长度
         * 字符串为空返回0;有中文返回中文字符数;无中文返回2
         * @param CustomerSn
         * @return
         */
        private Integer getNameLength(Integer CustomerSn){
            Integer sealWidth = 32;
            CustomerDto customerDto = customerService.getCustomerBySnForEsign(CustomerSn);
            String custSurname = customerDto.getCustSurname();
            String custName = customerDto.getCustName();
            Integer SurnameLen = this.count(custSurname);
            Integer NameLen = this.count(custName);
            Integer length = SurnameLen+NameLen;
            if(length>=0 && length<=4){
                sealWidth = length*16;
            }else if(length.equals(5) ||length.equals(6)){
                sealWidth = 3*16;
            }
            return sealWidth;
        }
        
        
        /***
         * 统计字符串中中文,英文,数字,空格等字符个数
         * @param str 需要统计的字符串
         */
        private Integer count(String str) {
            int chCharacter = 0;//中文字符
            int enCharacter = 0;//英文字符
            int spaceCharacter = 0;//空格
            int numberCharacter = 0;//数字
            int otherCharacter = 0;//其他字符
            
            if (null == str || str.equals("")) {
                return 0;
            }
            
            for (int i = 0; i < str.length(); i++) {
                char tmp = str.charAt(i);
                if ((tmp >= 'A' && tmp <= 'Z') || (tmp >= 'a' && tmp <= 'z')) {
                    enCharacter ++;
                } else if ((tmp >= '0') && (tmp <= '9')) {
                    numberCharacter ++;
                } else if (tmp ==' ') {
                    spaceCharacter ++;
                } else if (isChinese(tmp)) {
                    chCharacter ++;
                } else {
                    otherCharacter ++;
                }
            }
            logger.info("字符串:" + str + " "+"中文字符有:" + chCharacter+"英文字符有:" + enCharacter+"数字有:" + numberCharacter+"空格有:" + spaceCharacter+"其他字符有:" + otherCharacter);
            if(chCharacter>0){
                return chCharacter;
            }else{
                return 1;
            }
        }
        
        private boolean isChinese(char ch) {
            //获取此字符的UniCodeBlock
            Character.UnicodeBlock ub = Character.UnicodeBlock.of(ch);
            //  GENERAL_PUNCTUATION 判断中文的“号  
            //  CJK_SYMBOLS_AND_PUNCTUATION 判断中文的。号  
            //  HALFWIDTH_AND_FULLWIDTH_FORMS 判断中文的,号 
            if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS 
                    || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B 
                    || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS 
                    || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {
                return true;
            }
            return false;
        }
  • 相关阅读:
    arcEngine classic code(2)
    VisualGraph文档
    基于.net2 的CAD 绘图控件virtualGraph(2)
    沈阳三维GIS软件开发人员
    arcEngine + .net 2 AccessViolationException
    数据库事务并发带来的问题
    理解 WPF Dispatcher
    扇入与扇出
    IComparable 与 IComparer
    同步、异步、多线程
  • 原文地址:https://www.cnblogs.com/MIC2016/p/7308129.html
Copyright © 2020-2023  润新知