/** * 判断姓名字符长度 * 字符串为空返回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; }