在某些情况下,页面上的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库。