获取姓氏(姓和名),判断复姓

20 篇文章 1 订阅
2 篇文章 0 订阅

提供一个姓氏的方法,返回姓和名。

export const getFirstName = (fullname: string) => {    
    let hyphenated = ['欧阳', '太史', '端木', '上官', '司马', '东方', '独孤', '南宫', '万俟', '闻人',
                    '夏侯', '诸葛', '尉迟', '公羊', '赫连', '澹台', '皇甫', '宗政', '濮阳', '公冶',
                    '太叔', '申屠', '公孙', '慕容', '仲孙', '钟离', '长孙', '宇文', '城池', '司徒', 
                    '鲜于', '司空', '汝嫣', '闾丘', '子车', '亓官', '司寇', '巫马', '公西', '颛孙',
                    '壤驷', '公良', '漆雕', '乐正', '宰父', '谷梁', '拓跋', '夹谷', '轩辕', '令狐', 
                    '段干', '百里', '呼延', '东郭', '南门', '羊舌', '微生', '公户', '公玉', '公仪',
                    '梁丘', '公仲', '公上', '公门', '公山', '公坚', '左丘', '公伯', '西门', '公祖',
                    '第五', '公乘', '贯丘', '公皙', '南荣', '东里', '东宫', '仲长', '子书', '子桑', 
                    '即墨', '达奚', '褚师']; 
    let hyset = new Set(hyphenated);
    let vLength = fullname.length;   
    // 前为姓,后为名  
    let lastname = '', firstname = '';
    if (vLength > 2){    
        var preTwoWords = fullname.substr(0, 2);
        // 取命名的前两个字,看是否在复姓库中    
        if (hyset.has(preTwoWords)){    
            firstname = preTwoWords;    
            lastname = fullname.substr(2);    
        }else{    
            firstname = fullname.substr(0, 1);    
            lastname = fullname.substr(1);    
        }    
    }else if (vLength === 2){
        // 全名只有两个字时,以前一个为姓,后一下为名    
        firstname = fullname.substr(0, 1);    
        lastname = fullname.substr(1);    
    }else{    
        firstname = fullname;    
    }    
    return [firstname, lastname];    
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值