123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- //package cn.cslg.pas.service.patentRightSplit;
- //
- //import cn.cslg.pas.common.model.params.PatentRightParams;
- //import cn.cslg.pas.domain.PatentRight;
- //import org.springframework.stereotype.Service;
- //
- //import java.util.ArrayList;
- //import java.util.List;
- //import java.util.regex.Matcher;
- //import java.util.regex.Pattern;
- //
- ///**
- // * 拆分权要类(日本专利JP)
- // *
- // * @author chenyu
- // * @date 2023/8/30
- // */
- //@Service
- //public class PatentRightSplitJPService implements PatentRightSplitService {
- //
- // @Override
- // public List<PatentRight> formatPatentRight(PatentRightParams params) {
- // try {
- // //创建一个权要集合,用于返回结果
- // ArrayList<PatentRight> patentRights = new ArrayList<>();
- // //原文
- // String content = params.getContent();
- //
- // //将原文从"1"截取到末尾(为了去除首行"声称的是:\n")
- //// if (!content.equals("") && content.contains("声称的是") && content.contains("1")) {
- //// content = content.substring(content.indexOf("1"));
- //// }
- //
- // //第1步:拆分权要原文 ↓
- // //将原文和译文的所有换行符 "\r\n"和"\n" 替换成特殊符号 "##@@&&",这样可以使得全文连在一起,其次再根据特殊符号##@@&&拆分权要
- // content = content.replace("\r\n", "##@@&&").replace("\n", "##@@&&");
- //
- // //若原文没有换行符,则全文按照句号"。"拆分
- // if (!content.contains("##@@&&")) {
- // content = content.replace("。", "。\n");
- // } else {
- // //定义正则表达式
- // String regex = "##@@&&[0-9]+";
- // Matcher matcher = Pattern.compile(regex).matcher(content);
- // while (matcher.find()) {
- // String macherGroup = matcher.group();
- // content = content.replaceFirst(macherGroup, "\n" + macherGroup.substring(macherGroup.indexOf("##@@&&") + 6));
- // }
- // //去除所有特殊符号"##@@&&"
- // content = content.replace("##@@&&", "");
- // }
- // //最后按照换行符"\n"将权要拆成多个
- // String[] strs = content.split("\n");
- //
- //
- // //第2步:理出每个权要的类型(type为 1主权要还是 0附属权要)、理出权要之间的层级关系(每个权要的父级权要序号parentSort) ↓
- // String regex1 = "权利要求[0-9]+";
- // String regex2 = "权利要求[0-9]+[至或~-]+[0-9]+";
- // for (int i = 0; i < strs.length; i++) {
- // //创建权要对象装载当前权要
- // PatentRight patentRight = new PatentRight()
- // .setContent(strs[i])
- // .setSort(i);
- //
- // //判断若该权要有逗号(即超过一句话)并且它第一句话中有"权利要求"4个字 或者 该权要没有逗号(即只有一句话),并且它有"权利要求"4个字,则该权要类型为附属权要
- // if ((strs[i].contains(",") && strs[i].substring(0, strs[i].indexOf(",")).contains("权利要求")) || (!strs[i].contains(",") && strs[i].contains("权利要求"))) {
- // //则该权要类型为附属权要
- // patentRight.setType(0);
- //
- // Matcher matcher1 = Pattern.compile(regex1).matcher(strs[i]);
- // Matcher matcher2 = Pattern.compile(regex2).matcher(strs[i]);
- // if (matcher2.find()) { //"权利要求2~4"
- // String parentNum = matcher2.group().substring(matcher2.group().indexOf("权利要求") + 4); //"2~4"
- // String[] parentNumStrs = new String[0];
- // if (parentNum.contains("~")) {
- // parentNumStrs = parentNum.split("~"); //[2, 4]
- // } else if (parentNum.contains("-")) {
- // parentNumStrs = parentNum.split("-");
- // } else if (parentNum.contains("至")) {
- // parentNumStrs = parentNum.split("至");
- // } else if (parentNum.contains("或")) {
- // parentNumStrs = parentNum.split("或");
- // }
- //
- // int[] parentSorts = new int[parentNumStrs.length]; //[1, 3]
- // for (int i1 = 0; i1 < parentSorts.length; i1++) {
- // parentSorts[i1] = Integer.parseInt(parentNumStrs[i1]) - 1;
- // }
- //
- // if (parentNum.contains("或")) {
- // StringBuilder builder = new StringBuilder();
- // for (int parentSort : parentSorts) {
- // builder.append(parentSort).append(",");
- // }
- // patentRight.setParentSort(builder.substring(0, builder.lastIndexOf(",")));
- // } else {
- // StringBuilder builder = new StringBuilder();
- // for (int j = parentSorts[0]; j <= parentSorts[parentSorts.length - 1]; j++) {
- // if ((builder + "").equals("")) {
- // builder.append(j);
- // } else {
- // builder.append(",").append(j);
- // }
- // }
- // patentRight.setParentSort(builder + "");
- // }
- //
- // } else if (matcher1.find()) {
- // String parentNum = matcher1.group().substring(matcher1.group().indexOf("权利要求") + 4);
- // patentRight.setParentSort((Integer.parseInt(parentNum) - 1) + "");
- // }
- // } else {
- // //否则该权要为主权要
- // patentRight
- // .setType(1)
- // .setParentSort("-1");
- // }
- //
- // patentRights.add(patentRight);
- // }
- //
- // return patentRights;
- // } catch (Exception e) {
- // e.printStackTrace();
- // ArrayList<PatentRight> patentRights = new ArrayList<>();
- // patentRights.add(new PatentRight().setContent(params.getContent()));
- // return patentRights;
- // }
- //
- // }
- //
- //}
|