前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java判断字符串是公司还是人名的工具类

java判断字符串是公司还是人名的工具类

作者头像
IT云清
发布2019-01-22 10:17:44
1.5K0
发布2019-01-22 10:17:44
举报
文章被收录于专栏:IT云清

一个字符串,判断是公司,还是人的名字,下面的方法是依靠穷举,然后用关键词和目标串匹配做判断。可能会有遗漏的,但是目前没有找到什么更好的方法。

代码语言:javascript
复制
package demo1;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 判断一个字符串,是公司名字,还是人名字
 * @author YQ
 */
public class TestUtil {
	public Map<String, String> entValidate(String entName){
		Map<String, String> map = new HashMap<>();
		if(StringUtils.isBlank(entName)){
			map.put("code", "0002");
			map.put("msg", "字符串为空,无法判断");
			return map;
		}
		//穷举判断条件
		List<String> listOne = new ArrayList<>();
		List<String> listTwo = new ArrayList<>();
		List<String> listThree = new ArrayList<>();
		List<String> listException1 = new ArrayList<>();
		List<String> listException2 = new ArrayList<>();
		List<String> listGuFen = new ArrayList<>();

		listOne.add("有限");
		listOne.add("无限");
		listOne.add("集团");
		listOne.add("合作");
		listOne.add("会社");
		listOne.add("合伙");
		listOne.add("企业");

		listTwo.add("厂");
		listTwo.add("公司");
		listTwo.add("行");
		listTwo.add("社");
		listTwo.add("中心");
		listTwo.add("网吧");
		listTwo.add("院");
		listTwo.add("部");
		listTwo.add("处");
		listTwo.add("股");
		listTwo.add("队");
		listTwo.add("委员会");
		listTwo.add("合作");
		listTwo.add("库");
		listTwo.add("局");
		listTwo.add("村");
		listTwo.add("团");
		listTwo.add("站");
		listTwo.add("店");
		listTwo.add("所");
		listTwo.add("段");
		listTwo.add("厅");
		listTwo.add("组");
		listTwo.add("工作室");
		listTwo.add("研究中心");
		listTwo.add("办公室");
		listTwo.add("商场");
		listTwo.add("大学");

		listThree.add("Co.");
		listThree.add("Limited");
		listThree.add("LIMITED");
		listThree.add("LTD.");
		listThree.add("INC.");
		listThree.add("LLC.");

		listException1.add("委派代表");

		listException2.add("财政部");
		listException2.add("国务院");
		listException2.add("国资委");

		listGuFen.add("国家股");
		listGuFen.add("人股");
		listGuFen.add("流通股");
		listGuFen.add("公众股");
		listGuFen.add("工股");
		listGuFen.add("股东");
		listGuFen.add("A股");
		listGuFen.add("H股");
		listGuFen.add("B股");
		listGuFen.add("上市股");
		listGuFen.add("基本社员 ");
		listGuFen.add("集体股");
		listGuFen.add("合作股");
		listGuFen.add("募集股");

		// 根据字符串判断,是公司 还是 个人
		boolean flag = false;
		
		if (entName.length() > 4) {
			for (int i = 0; i < listOne.size(); i++) {
				if (entName.contains(listOne.get(i))) {
					flag = true;
					break;
				}
			}

			if (!flag) {
				for (int i = 0; i < listTwo.size(); i++) {
					if (entName.contains(listTwo.get(i))) {
						flag = true;
						break;
					}
				}
			}

			if (!flag) {
				for (int i = 0; i < listThree.size(); i++) {
					if (entName.contains(listThree.get(i))) {
						flag = true;
						break;
					}
				}
			}

			if (!flag) {
				for (int i = 0; i < listException1.size(); i++) {
					if (entName.contains(listException1.get(i))) {
						flag = true;
						break;
					}
				}
			}

			if (!flag) {
				for (int i = 0; i < listGuFen.size(); i++) {
					if (entName.contains(listGuFen.get(i))) {
						flag = true;
						break;
					}
				}
			}
		}

		if (!flag) {
			for (int i = 0; i < listException2.size(); i++) {
				if (entName.contains(listException2.get(i))) {
					flag = true;
					break;
				}
			}
		}

		if (!flag) {
			if (entName.length() == 4 && entName.contains("大学")) {
				flag = true;
			}
		}
		
		//是公司
		if(flag){
			map.put("type", "ent");
			map.put("code", "0000");
			map.put("msg", "企业");
		}else{
			map.put("type", "person");
			map.put("code", "0001");
			map.put("msg", "是人");
		}

		return map;
	}

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年09月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档