万能简历解析初步拆分块

 解析简历按照,个人信息,求职意向等模块分割,可随意添加,欢迎一起讨论细拆分信息


import org.apache.commons.lang3.*;

import java.util.*;

/***
 *
 *
 * 描    述:
 *
 * 创 建 者: @author jerry
 * 创建时间: 2021/12/22 10:09
 * 创建描述:
 *
 * 修 改 者:
 * 修改时间:
 * 修改描述:
 *
 * 审 核 者:
 * 审核时间:
 * 审核描述:
 *
 */
public class ResumeBlockUtils {

    static List<String> infromlist = new ArrayList<>();
    static {
        infromlist.add("个人简历");
        infromlist.add("个人信息");
        infromlist.add("个人资料");
        infromlist.add("基本信息");

        infromlist.add("教育背景");
        infromlist.add("教育经历");

        infromlist.add("实习经历");
        infromlist.add("校内实践");

        infromlist.add("工作经历");
        infromlist.add("工作描述");
        infromlist.add("工作经验");
        infromlist.add("工作成果");

        infromlist.add("求职意向");

        infromlist.add("项⽬经历");
        infromlist.add("项目经验");

        infromlist.add("技能证书");
        infromlist.add("专业技能");

        infromlist.add("自我评价");
        infromlist.add("个人评价");

    }
    static Map<String,String> infromMap = new HashMap<>();
    static {
        infromMap.put("个人简历","resume");
        infromMap.put("个人信息","personal");
        infromMap.put("个人资料","personal");
        infromMap.put("基本信息","personal");

        infromMap.put("教育背景","educational");
        infromMap.put("教育经历","educational");

        infromMap.put("实习经历","internship");
        infromMap.put("校内实践","campus");

        infromMap.put("工作经历","experience");
        infromMap.put("工作描述","experience");
        infromMap.put("工作经验","experience");
        infromMap.put("工作成果","experience");

        infromMap.put("求职意向","intention");

        infromMap.put("项⽬经历","project");
        infromMap.put("项目经验","project");

        infromMap.put("技能证书","skill");
        infromMap.put("专业技能","professional");

        infromMap.put("自我评价","evaluation");
        infromMap.put("个人评价","evaluation");
    }
    public static Map<String,List<String>> analysis(String s){
        String[] split = s.replaceAll("\r","").replaceAll("\t","").split("\n");
        List<String> list = new LinkedList<>(Arrays.asList(split));
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String str = iterator.next();
            if  (StringUtils.isBlank(str)) {
                iterator.remove();   //2.注意这个地方
            }
        }
        Iterator<String> iterator1 = infromlist.iterator();
        Map<Integer,String> map = new LinkedHashMap<>();
        //简历分块
        while (iterator1.hasNext()) {
            String next = iterator1.next();
            for (int i = 0; i < list.size()-1; i++) {
                String s1 = list.get(i);
                if(s1.contains(next)){
                    map.put(i,next);
                }
            }
        }
//        Set<String> striMap = infromMap.keySet();
//        for(String str : striMap){
//            String key = str;
//            for (int i = 0; i < list.size()-1; i++) {
//                String s1 = list.get(i);
//                if(s1.contains(key)){
//                    map.put(i,infromMap.get(key));
//                }
//            }
//        }
        map.put(list.size(),"结束");
        map = sortByKey(map);
//        System.out.println(new Gson().toJson(list.toString()));
//        System.out.println(map.toString());
        Set<Integer> integers = map.keySet();
        int sta = 0;
        int end = 0;
        Map<String,List<Integer>> maps = new HashMap<>();
        for(Integer in : integers){
            if(in>sta){
                end = in;
                List<Integer> integers1 = intsBetween(sta, end);
                maps.put(map.get(sta),integers1);
            }
            sta = in;
        }
//        System.out.println(maps.toString());
        Set<String> strings = maps.keySet();
        Map<String,List<String>> mapStr = new HashMap<>();
        for (String str: strings) {
            List<Integer> integers1 = maps.get(str);
            List<String> data = new ArrayList<>();
            for (Integer num : integers1) {
                data.add(list.get(num));
            }
            mapStr.put(str,data);
        }
        return mapStr;
    }

    private  static List<Integer> intsBetween(int a, int b) {
        //将a,b强转为int型会丢掉小数
        List<Integer> list  = new ArrayList<>();
        if( b > a ){
//            System.out.println(a+","+b+"之间存在整数:");
            for (int i = a; i < b; i++) {
                list.add(i);
            }
        }
        return list;
    }

    /**
     * map 按 key 升序排序
     */
    private static Map<Integer, String> sortByKey(Map<Integer, String> map) {
        Map<Integer, String> result = new LinkedHashMap<>(map.size());
        map.entrySet().stream()
                .sorted(Map.Entry.comparingByKey())
                .forEachOrdered(e -> result.put(e.getKey(), e.getValue()));
        return result;
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值