在javascript中把全名转换成姓和名的例子

389 阅读1分钟

在某些情况下,页面上的UI表单只接受单一的文本框来获取全名,开发人员需要将其分割成名、中名和姓。

这篇文章讲述了如何在javascript和Angular中把全名分割成名、姓和中间名。

通常用户输入的名字有三个字。

例如,用户输入的名字归档为

let fullname ="john Erwin Wick "
var names=fullname.split(' ');
console.log("firstname="+names[0])
console.log("lastName="+names[1]);
console.log("middleName="+names[2]);

如果用户输入的是两个字呢?

if (names.length > 2) {
  output = [{firstname: names[0], middlenames: names.slice(1, -1).join(' ') , lastname: names[names.length - 1]}]; 
}
else if (names.length < 2) {
  output = [{firstname: names[0], middlenames: '', lastname: ''}];
}
else {
  output = [{firstname: names[0], middlenames: '', lastname: names[names.length - 1]}];
}

用nodejs中的humanparser将全名拆分为名、姓、敬语和后缀

humanparser 是一个npm库,用于将人名字符串解析为saluation、firstname、lastname、middlename和senix。

首先使用npm install安装humanparser。

下面是一个例子

const parser = require('humanparser');

const names = parser.parseName("Mr. first second last");
console.log(names);

输出

 {
    salutation: 'Mr.',
    firstName: 'first',
    lastName: 'last',
    middleName: 'second',
    fullName: 'Mr first second last'
}

使用正则表达式,将名字和姓氏分为两部分

在javascript中使用正则表达式,我们可以使用分割。

const fullname = "First Second Third"
  var namesArray  = fullname.match(/[A-Z][a-z]+|([aeodlsz]+\s+)+[A-Z[a-z]+/g) || [];


console.log("first name  : " + s[0]);
console.log("middle name : " + s[1]);
console.log("last name: " + s[2]);

总结

学习了将全名解析为不同名字的不同方法后,就完成了。在这篇文章中,你学会了将全名拆分为敬语、名字、中间名、姓氏和后缀。它包括分割函数,使用正则表达式和humanparser npm库。