package cn.cslg.pas.common.utils; import cn.cslg.pas.common.vo.OPS.PatentNoDetailVO; import org.springframework.stereotype.Component; import java.util.regex.Matcher; import java.util.regex.Pattern; @Component public class PatentNoUtil { public static PatentNoDetailVO getPatentNoDetail(String patentNo){ PatentNoDetailVO patentNoDetailVO = new PatentNoDetailVO(); Pattern PATENT_PATTERN = Pattern.compile("^([A-Za-z]{2})(\\d+)([A-Za-z\\d]+)$"); Matcher matcher = PATENT_PATTERN.matcher(patentNo); if (matcher.find()) { String country = matcher.group(1); String num = matcher.group(2); String cc = matcher.group(3); patentNoDetailVO.setKind(cc); patentNoDetailVO.setNumber(num); patentNoDetailVO.setCc(country); return patentNoDetailVO; } else { throw new IllegalArgumentException("Invalid patent number format: " + patentNo); } } public static String formatApNo(String patentNo){ Pattern patternEn = Pattern.compile("^[A-Za-z]{2}.*"); Matcher matcher = patternEn.matcher(patentNo); if(!matcher.find()){ patentNo ="CN"+patentNo; } String numbers = patentNo.replaceAll("[^\\d]", ""); char secondLastChar = patentNo.charAt(patentNo.length() - 2); if(numbers.length()==13&&secondLastChar!='.'){ StringBuilder stringBuilder =new StringBuilder(patentNo); stringBuilder.insert(patentNo.length() - 1,"."); patentNo =stringBuilder.toString(); } return patentNo; } }