1.制作简历分析器
通过前面的学习,我们学习了基本的编程基础,现在通过自己动手做一个简历分析器来进行巩固和进阶。
1.1 需求分析
人工读取简历虽然准确,但是也耗费了大量的人力,如果我们能做一个简历分析器,在简历筛选前期自动过滤一些不符合条件的,将会节省大量人力阅读。
所以,需要一个简历分析程序,能快速的对一份简历进行关键信息提取,比如,姓名,年龄,毕业院校,专业信息等。
1.2 场景描述
假设现在有一个文件,内容如下
姓名: 张麻子
性别: 男
年龄: 28
自我评价: 好好啊好好好哈
大学成绩:A A A
毕业院校: 黄埔军校
获得证书:教师资格证, 教官证
人生格言: 公平,公平,还是tm的公平
专业:打劫专业
要求写一个程序,能提取上面的姓名,年龄,毕业院校,专业,并存放在一个对象里,然后打印对象的信息。
1.3 具体实现
首先,我们需要定义一个存放信息的对象:
public class PersonInfo {
private String name;
private String school;
private Integer age;
private String professional;
public String getName() {
return name;
}
@Override
public String toString() {
return "PersonInfo{" +
"name='" + name + '\'' +
", school='" + school + '\'' +
", age=" + age +
", professional='" + professional + '\'' +
'}';
}
public void setName(String name) {
this.name = name;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getProfessional() {
return professional;
}
public void setProfessional(String professional) {
this.professional = professional;
}
}
然后就是进行信息提取的程序:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) throws FileNotFoundException {
Scanner scanner = new Scanner(new File("麻子.txt"));
String[] ps = readInfo(scanner);
PersonInfo personInfo = getPersonInfo(ps);
System.out.println("简历的基本信息为:"+personInfo.toString());
}
/**
* 信息提取
* @param params
* @return
*/
public static PersonInfo getPersonInfo(String[] params){
PersonInfo personInfo = new PersonInfo();
for(String s:params){
if(s!=null){
if(s.contains("姓名")){
s = s.replace("姓名","");
s = s.replace("\r","");
personInfo.setName(s);
}
if(s.contains("年龄")){
String age = "";
for(int i=0;i<s.length();i++) {
if (s.charAt(i) >= 48 && s.charAt(i) <= 57) {
age += s.charAt(i);
}
}
personInfo.setAge(Integer.valueOf(age));
}
if(s.contains("毕业院校")){
s = s.replace("毕业院校","");
s = s.replace("\r","");
personInfo.setSchool(s);
}
if(s.contains("专业")){
s = s.replace("专业","");
s = s.replace("\r","");
personInfo.setProfessional(s);
}
}
}
return personInfo;
}
/**
* 信息扫描
* @param scanner
* @return
*/
public static String[] readInfo(Scanner scanner){
String [] params = new String[2];
scanner.useDelimiter("\n");
int i = 0;
while (true){
if(scanner.hasNext()){
if(i==params.length){
params = dilatation(params);
}
params[i++] = scanner.next();
}else break;
}
return params;
}
/**
* 字符串数组扩容
* @param source
* @return
*/
public static String[] dilatation(String[] source){
String[] result = new String[2*source.length+5];
for (int i=0;i<source.length;i++){
result[i] = source[i];
}
return result;
}
}
最后运行它:
上面是满足了基本需要,想要做的更好的同学可以在此基础上进行扩展,优化,达到更好的效果。
注意: 上面的实践仅作为学习巩固练习,真实项目中是不会这么写的哈哈哈哈哈哈。
代码地址
Java基础学习/src/main/java/Base/exa18_1 · 严家豆/Study - 码云 - 开源中国 (gitee.com)