package com.chinaweal.aiccs.common.util; import java.util.LinkedHashMap; import java.util.Map; import java.util.UUID; /** * 自动以字符串工具类,继承于org.apache.commons.lang3.StringUtils * * @author lroyia * @since 2020/7/31 14:25 **/ public abstract class StringUtils extends org.apache.commons.lang3.StringUtils { /** * 将Object转为字符串(null时返回空字串) * * @param obj obj * @return 字符串 * @author lroyia * @since 2020年7月31日 14:28:22 */ public static String tranObject(Object obj) { return obj == null ? EMPTY : obj.toString(); } /** * 判断字符是否不相等 * * @param cs1 字符1 * @param cs2 字符2 * @return 判断结果 * @author lroyia * @since 2025年2月28日11:01:30 */ public static boolean notEquals(final CharSequence cs1, final CharSequence cs2) { return !equals(cs1, cs2); } /** * 获取文件扩展名 * * @param fileName 文件全名 * @return 文件扩展名 * @author lroyia * @since 2020年9月23日 14:37:45 */ public static String getFileExt(String fileName) { int pointIdx = fileName.lastIndexOf("."); if (pointIdx < 0) return EMPTY; return fileName.substring(pointIdx); } /** * 是否有统一码 * * @param uscc 统一社会信用底阿妈 * @return boolean * @author lroyia * @since 2021年1月22日 11:15:48 */ public static boolean isUscc(String uscc) { if (isNotBlank(uscc)) { return trimToEmpty(uscc).length() == 18; } return false; } /** * 是否等于这些字符串中的其中一个 * * @param source 源字符串 * @param inStr 比较的字符串信息 * @return 比较结果 * @author lroyia * @since 2021年3月23日 15:56:46 */ public static boolean in(String source, String... inStr) { if (inStr == null) return false; for (String each : inStr) { if (equals(source, each)) return true; } return false; } /** * 是否不等于这些字符串中的任何一个 * * @param source 源字符串 * @param notInStr 比较字符串 * @return 比较结果 * @author lroyia * @since 2021年3月23日 15:59:07 */ public static boolean notIn(String source, String... notInStr) { return !in(source, notInStr); } /** * 从字串中提取辖区信息 * * @param str 提取的字符串 * @return 提取结果 * @author lroyia * @since 2021年6月21日 16:58:40 */ public static String getRegionByStr(String str) { // for (String s : Constant.GZ_All_REGION) { // if (str.contains(s.replace("区", EMPTY))) { // return s; // } // } return null; } // /** // * 从字串中提取辖区码值 // * // * @param str 提取的字符串 // * @return 提取结果 // * @author Lee // * @since 2021年6月29日 17点38分 // */ // public static String getRegionCodeByStr(String str) { // String area = ""; // if ("广州市市场监督管理局".equals(str)) { // return "440100"; // } else { // for (String s : Constant.GZ_All_REGION) { // if (str.contains(s.replace("区", EMPTY))) { // area = s; // break; // } // } // } // if (StringUtils.isNotBlank(area)) { // Set keySet = Constant.NM_LOC_REGION_CODE.keySet(); // for (String code : keySet) { // if (Constant.NM_LOC_REGION_CODE.get(code).contains(area)) { // return code; // } // } // } // return null; // } /** * 转换rest_log日志表的query值 */ public static Map changeRestLogQuery(String text) { //不存在的key,可以补上 String[] keys = {"nextNodeID", "handledate", "opinion", "remark", "nextPerformerids", "bizseq", "workflowid", "tasklistid", "handler", "handlerid", "opiniontype", "opinioncontent", "lostCreditExplainrem", "remRemark", "operOpinion", "remreasons", "isAccept", "isAgreeRepair", "remexcpres", "applicant"}; Map map = new LinkedHashMap<>(); for (String key : keys) { int i = text.indexOf(key + ":"); if (i == -1) { continue; } String substring = text.substring(i); int end = substring.indexOf(" "); if (end == -1) { map.put(key, substring.substring((key + ":").length())); } else { String str = substring.substring((key + ":").length(), end); map.put(key, str); } } return map; } public static void main(String[] args) { String text = "nextNodeID:endExptlist handledate:2021-11-19 11:30:16 opinion:同意 remark: isagree:1 nextPerformerids: bizseq:fddad9ec-7241-4f76-87c0-00fd33e4b274 workflowid:00b1ab71-a2a0-4cb5-b413-ac993e7ee25d tasklistid:0c4ece439e0c4eddcbe135f0216f85bc handler:黎树忠 handlerid:1cce40ea-ae8a-4918-915d-aa9e285155fa opiniontype:2 opinioncontent:同意"; Map stringStringMap = changeRestLogQuery(text); System.out.println(stringStringMap.get("bizseq")); } /** * bytes数组转16进制字串 * * @param bytes byte数组 * @return 十六进制字串 * @author lroyia * @since 2021年11月27日 16:52:39 */ public static String bytesToHex(byte[] bytes) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < bytes.length; i++) { String hex = Integer.toHexString(bytes[i] & 0xFF); if (hex.length() < 2) { sb.append(0); } sb.append(hex); } return sb.toString(); } /** * 截取区编码前缀 如440000 -> 44 * * @param region 区编码 * @return 截取结果 * @author lroyia * @since 2021年12月29日 15:07:43 */ public static String getRegionPrefixStr(String region) { char[] chars = region.toCharArray(); int i = chars.length - 1; for (; i > -1; i--) { if (chars[i] != '0') { if (i % 2 == 0) { i++; } break; } } return region.substring(0, i + 1); } /** * 获取一个UUID * * @return uuid * @author lroyia * @since 2025年2月28日10:55:53 */ public static String getUUID() { return UUID.randomUUID().toString().replace("-", ""); } /** * 清除行政区划尾端的0 * * @param regionCode 行政区划 * @return 清除后的0 * @author lroyia * @since 2023年7月3日 14:02:52 */ public static String clearRegionZero(String regionCode) { if (isBlank(regionCode)) { return EMPTY; } int maxLength = regionCode.length() / 2 > 3 ? 4 : (regionCode.length() / 2); for (int i = maxLength; i > 0; i--) { int startIndex = (i - 1) * 2; int endIndex = i == 4 ? 9 : (i * 2); if (clearSuffixZero(regionCode.substring(startIndex, endIndex)).isEmpty()) { continue; } return regionCode.substring(0, endIndex); } return EMPTY; } /** * 清除字符串尾部的0 * * @param str 字符串 * @return 清除结果 * @author lroyia * @since 2023年3月1日 09:22:43 */ public static String clearSuffixZero(String str) { if (isBlank(str)) { return str; } int index = -1; for (int i = str.length() - 1; i > -1; i--) { if (str.charAt(i) != '0') { break; } index = i; } if (index > -1) { str = str.substring(0, index); } return str; } /** * 后部补'0',将字串填充到目标长度 * * @param str 原字串 * @param length 目标长度 * @return 填充结果 * @author lroyia * @since 2023年6月1日 10:29:37 */ public static String fillZeroSuffix(String str, int length) { StringBuilder sb = new StringBuilder(str); while (sb.length() < length) { sb.append('0'); } return sb.toString(); } /** * 前部补'0',将字串填充到目标长度 * * @param str 原字串 * @param length 目标长度 * @return 填充结果 * @author lroyia * @since 2023年6月1日 10:29:37 */ public static String fillZeroPrefix(String str, int length) { StringBuilder sb = new StringBuilder(str); while (sb.length() < length) { sb.insert(0, '0'); } return sb.toString(); } }