百家姓

92 阅读6分钟
public class NameConversionUtil {

    public final static Map<String, String> surnameMap = new HashMap<String, String>() {
        {
            put("赵","zhao");
            put("钱","qian");
            put("孙","sun");
            put("李","li");
            put("周","zhou");
            put("吴","wu");
            put("郑","zheng");
            put("王","wang");
            put("冯","feng");
            put("陈","chen");
            put("褚","chu");
            put("卫","wei");
            put("蒋","jiang");
            put("沈","shen");
            put("韩","han");
            put("杨","yang");
            put("朱","zhu");
            put("秦","qin");
            put("尤","you");
            put("许","xu");
            put("何","he");
            put("吕","lu");
            put("施","shi");
            put("张","zhang");
            put("孔","kong");
            put("曹","cao");
            put("严","yan");
            put("华","hua");
            put("金","jin");
            put("魏","wei");
            put("陶","tao");
            put("姜","jiang");
            put("戚","qi");
            put("谢","xie");
            put("邹","zou");
            put("喻","yu");
            put("柏","bai");
            put("水","shui");
            put("窦","dou");
            put("章","zhang");
            put("云","yun");
            put("苏","su");
            put("潘","pan");
            put("葛","ge");
            put("奚","xi");
            put("范","fan");
            put("彭","peng");
            put("郎","lang");
            put("鲁","lu");
            put("韦","wei");
            put("昌","chang");
            put("马","ma");
            put("苗","miao");
            put("凤","feng");
            put("花","hua");
            put("方","fang");
            put("俞","yu");
            put("任","ren");
            put("袁","yuan");
            put("柳","liu");
            put("酆","feng");
            put("鲍","bao");
            put("史","shi");
            put("唐","tang");
            put("费","fei");
            put("廉","lian");
            put("岑","cen");
            put("薛","xue");
            put("雷","lei");
            put("贺","he");
            put("倪","ni");
            put("汤","tang");
            put("滕","teng");
            put("殷","yin");
            put("罗","luo");
            put("毕","bi");
            put("郝","hao");
            put("邬","wu");
            put("安","an");
            put("常","chang");
            put("乐","le");
            put("于","yu");
            put("时","shi");
            put("傅","fu");
            put("皮","pi");
            put("卞","bian");
            put("齐","qi");
            put("康","kang");
            put("伍","wu");
            put("余","yu");
            put("元","yuan");
            put("卜","bu");
            put("顾","gu");
            put("孟","meng");
            put("平","ping");
            put("黄","huang");
            put("和","he");
            put("穆","mu");
            put("萧","xiao");
            put("尹","yin");
            put("姚","yao");
            put("邵","shao");
            put("堪","kan");
            put("汪","wang");
            put("祁","qi");
            put("毛","mao");
            put("禹","yu");
            put("狄","di");
            put("米","mi");
            put("贝","bei");
            put("明","ming");
            put("臧","zang");
            put("计","ji");
            put("伏","fu");
            put("成","cheng");
            put("戴","dai");
            put("谈","tan");
            put("宋","song");
            put("茅","mao");
            put("庞","pang");
            put("熊","xiong");
            put("纪","ji");
            put("舒","shu");
            put("屈","qu");
            put("项","xiang");
            put("祝","zhu");
            put("董","dong");
            put("粱","liang");
            put("杜","du");
            put("阮","ruan");
            put("蓝","lan");
            put("闵","min");
            put("席","xi");
            put("季","ji");
            put("麻","ma");
            put("强","qiang");
            put("贾","jia");
            put("路","lu");
            put("娄","lou");
            put("危","wei");
            put("江","jiang");
            put("童","tong");
            put("颜","yan");
            put("郭","guo");
            put("梅","mei");
            put("盛","sheng");
            put("林","lin");
            put("刁","diao");
            put("钟","zhong");
            put("徐","xu");
            put("丘","qiu");
            put("骆","luo");
            put("高","gao");
            put("夏","xia");
            put("蔡","cai");
            put("田","tian");
            put("樊","fan");
            put("胡","hu");
            put("凌","ling");
            put("霍","huo");
            put("虞","yu");
            put("万","wan");
            put("支","zhi");
            put("柯","ke");
            put("昝","zan");
            put("管","guan");
            put("卢","lu");
            put("莫","mo");
            put("经","jing");
            put("房","fang");
            put("裘","qiu");
            put("缪","miao");
            put("干","gan");
            put("解","xiaa");
            put("应","ying");
            put("宗","zong");
            put("丁","ding");
            put("宣","xuan");
            put("贲","ben");
            put("邓","deng");
            put("郁","yu");
            put("单","shan");
            put("杭","hang");
            put("洪","hong");
            put("包","bao");
            put("诸","zhu");
            put("左","zuo");
            put("石","shi");
            put("崔","cui");
            put("吉","ji");
            put("钮","niu");
            put("龚","gong");
            put("程","cheng");
            put("嵇","ji");
            put("邢","xing");
            put("滑","hua");
            put("裴","pei");
            put("陆","lu");
            put("荣","rong");
            put("翁","weng");
            put("荀","xun");
            put("羊","yang");
            put("於","yu");
            put("惠","hui");
            put("甄","zhen");
            put("魏","wei");
            put("家","jia");
            put("封","feng");
            put("芮","rui");
            put("羿","yi");
            put("储","chu");
            put("靳","jin");
            put("汲","ji");
            put("邴","bing");
            put("糜","mi");
            put("松","song");
            put("井","jing");
            put("段","duan");
            put("富","fu");
            put("巫","wu");
            put("乌","wu");
            put("焦","jiao");
            put("巴","ba");
            put("弓","gong");
            put("牧","mu");
            put("隗","wei");
            put("山","shan");
            put("谷","gu");
            put("车","che");
            put("侯","hou");
            put("宓","mi");
            put("蓬","peng");
            put("全","quan");
            put("郗","xi");
            put("班","ban");
            put("仰","yang");
            put("秋","qiu");
            put("仲","zhong");
            put("伊","yi");
            put("宫","gong");
            put("宁","ning");
            put("仇","qiu");
            put("栾","luan");
            put("暴","bao");
            put("甘","gan");
            put("钭","dou");
            put("厉","li");
            put("戎","rong");
            put("祖","zu");
            put("武","wu");
            put("符","fu");
            put("刘","liu");
            put("景","jing");
            put("詹","zhan");
            put("束","shu");
            put("龙","long");
            put("叶","ye");
            put("幸","xing");
            put("司","si");
            put("韶","shao");
            put("郜","gao");
            put("黎","li");
            put("蓟","ji");
            put("薄","bo");
            put("印","yin");
            put("宿","xiu");
            put("白","bai");
            put("怀","huai");
            put("蒲","pu");
            put("台","tai");
            put("从","cong");
            put("鄂","e");
            put("索","suo");
            put("咸","xian");
            put("籍","ji");
            put("赖","lai");
            put("卓","zhuo");
            put("蔺","lin");
            put("屠","tu");
            put("蒙","meng");
            put("池","chi");
            put("乔","qiao");
            put("阴","yin");
            put("郁","yu");
            put("胥","xu");
            put("能","neng");
            put("苍","cang");
            put("双","shuang");
            put("闻","wen");
            put("莘","shen");
            put("党","dang");
            put("翟","di");
            put("谭","tan");
            put("贡","gong");
            put("劳","lao");
            put("逄","pang");
            put("姬","ji");
            put("申","shen");
            put("扶","fu");
            put("堵","du");
            put("冉","ran");
            put("宰","zai");
            put("郦","li");
            put("雍","yong");
            put("却","que");
            put("璩","qu");
            put("桑","sang");
            put("桂","gui");
            put("濮","pu");
            put("牛","niu");
            put("寿","shou");
            put("通","tong");
            put("边","bian");
            put("扈","hu");
            put("燕","yan");
            put("冀","ji");
            put("郏","jia");
            put("浦","pu");
            put("尚","shang");
            put("农","nong");
            put("温","wen");
            put("别","bie");
            put("庄","zhuang");
            put("晏","yan");
            put("柴","chai");
            put("瞿","qu");
            put("阎","yan");
            put("充","chong");
            put("慕","mu");
            put("连","lian");
            put("茹","ru");
            put("习","xi");
            put("宦","huan");
            put("艾","ai");
            put("鱼","yu");
            put("容","rong");
            put("向","xiang");
            put("古","gu");
            put("易","yi");
            put("慎","shen");
            put("戈","ge");
            put("廖","liao");
            put("庾","yu");
            put("终","zhong");
            put("暨","ji");
            put("居","ju");
            put("衡","heng");
            put("步","bu");
            put("都","dou");
            put("耿","geng");
            put("满","man");
            put("弘","hong");
            put("匡","kuang");
            put("国","guo");
            put("文","wen");
            put("寇","kou");
            put("广","guang");
            put("禄","lu");
            put("阙","que");
            put("东","dong");
            put("殴","ou");
            put("殳","shu");
            put("沃","wo");
            put("利","li");
            put("蔚","wei");
            put("越","yue");
            put("夔","kui");
            put("隆","long");
            put("师","shi");
            put("巩","gong");
            put("厍","she");
            put("聂","nie");
            put("晁","chao");
            put("勾","gou");
            put("敖","ao");
            put("融","rong");
            put("冷","leng");
            put("訾","zi");
            put("辛","xin");
            put("阚","kan");
            put("那","na");
            put("简","jian");
            put("饶","rao");
            put("空","kong");
            put("曾","ceng");
            put("毋","wu");
            put("沙","sha");
            put("乜","nie");
            put("养","yang");
            put("鞠","ju");
            put("须","xu");
            put("丰","feng");
            put("巢","chao");
            put("关","guan");
            put("蒯","kuai");
            put("相","xiang");
            put("查","cha");
            put("后","hou");
            put("荆","jing");
            put("红","hong");
            put("游","you");
            put("竺","zhu");
            put("权","quan");
            put("逯","lu");
            put("盖","gai");
            put("后","hou");
            put("桓","huan");
            put("公","gong");
            put("万俟","moqi");
            put("司马","sima");
            put("上官","shangguan");
            put("欧阳","ouyang");
            put("夏侯","xiahou");
            put("诸葛","zhuge");
            put("闻人","wenren");
            put("东方","dongfang");
            put("赫连","helian");
            put("皇甫","huangfu");
            put("尉迟","yuchi");
            put("公羊","gongyang");
            put("澹台","dantai");
            put("公冶","gongye");
            put("宗政","zongzheng");
            put("濮阳","puyang");
            put("淳于","chunyu");
            put("单于","chanyu");
            put("太叔","taishu");
            put("申屠","shentu");
            put("公孙","gongsun");
            put("仲孙","zhongsun");
            put("轩辕","xuanyuan");
            put("令狐","linghu");
            put("钟离","zhongli");
            put("宇文","yuwen");
            put("长孙","zhangsun");
            put("慕容","murong");
            put("鲜于","xianyu");
            put("闾丘","luqiu");
            put("司徒","situ");
            put("司空","sikong");
            put("亓官","qiguan");
            put("司寇","sikou");
            put("仉督","zhangdu");
            put("子车","ziche");
            put("颛孙","zhuansun");
            put("端木","duanmu");
            put("巫马","wuma");
            put("公西","gongxi");
            put("漆雕","qidiao");
            put("乐正","lezheng");
            put("壤驷","rangsi");
            put("公良","gongliang");
            put("拓拔","tuoba");
            put("夹谷","jiagu");
            put("宰父","zaifu");
            put("谷粱","guliang");
            put("晋楚","jinchu");
            put("闫法","yanfa");
            put("汝鄢","ruyan");
            put("涂钦","tuqin");
            put("段干","duangan");
            put("百里","baili");
            put("东郭","dongguo");
            put("南门","nanmen");
            put("呼延","huyan");
            put("归海","guihai");
            put("羊舌","yangshe");
            put("微生","weisheng");
            put("岳帅","yueshuai");
            put("缑亢","goukang");
            put("况后","kuanghou");
            put("有琴","youqin");
            put("梁丘","liangqiu");
            put("左丘","zuoqiu");
            put("东门","dongmen");
            put("西门","ximen");
            put("商牟","shangmou");
            put("佘佴","shenai");
            put("伯赏","boshang");
            put("南宫","nangong");
            put("墨哈","moha");
            put("谯笪","qiaoda");
            put("年爱","nianai");
            put("阳佟","yangtong");
            put("第五","diwu");
            put("言福","yanfu");
        }
    };

    public static void main(String args[]){
        String passname ="欧阳娜娜";

        String surName = "";
        String surNamePy = "";
        String lastName = "";
        String lastNamePy = "";
        String username = "";

        Set<String> keys = surnameMap.keySet();
        for (String key : keys) {
            //如果匹配到了,需要判断一下这个里面的key是复姓还是单姓没如果是复姓直接跳出,如果是单姓继续找找看看能不能找到复姓
            if(passname.startsWith(key)){
                surName = key;
                surNamePy = surnameMap.get(key);
                if(key.length() > 1){
                    break;
                }
            }
        }

        if(StringUtils.isNotBlank(surName)){
            lastName = passname.replace(surName,"");
            lastNamePy = ChineseCharToEnUtil.getFirstSpell(lastName);
            username = surNamePy + lastNamePy.toLowerCase();
        }else{
            //说明百家姓转换不了,直接用全拼转换一下吧
            username = ChineseCharToEnUtil.getFirstSpell(passname);
        }
        System.out.println(username);
    }

}