js 文本框输入中文姓名,分割为lastname(姓) 和 firstname(名) (包含复姓)

 

 

按需求,除去以下  hyphenated 中的复姓以为,其他特殊的四字姓名或者是多字的姓名,都一第一个字为姓,其余为名字。

 

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)){    
        lastname = preTwoWords;    
        firstname = fullname.substr(2);    
      }else{    
        lastname = fullname.substr(0, 1);    
          firstname = fullname.substr(1);    
      }    
  }else if (vLength === 2){
      // 全名只有两个字时,以前一个为姓,后一下为名    
      lastname = fullname.substr(0, 1);    
      firstname = fullname.substr(1);    
  }else{    
    lastname = fullname;    
  }  

 

posted @ 2020-05-29 11:43  一团小源源  阅读(1263)  评论(0)    收藏  举报