解析简历按照,个人信息,求职意向等模块分割,可随意添加,欢迎一起讨论细拆分信息
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;
}
}