给定一个 JS 变量,例如:
var n = James Bond;
var n = James Earl Bond;
var n = James;
如何返回名字加上姓氏首字母?同时考虑忽略中间名和他们只是名字的可能性?以前有人优雅地解决过这个问题吗?
谢谢
给定一个 JS 变量,例如:
var n = James Bond;
var n = James Earl Bond;
var n = James;
如何返回名字加上姓氏首字母?同时考虑忽略中间名和他们只是名字的可能性?以前有人优雅地解决过这个问题吗?
谢谢
function formatName(name)
{
var newName;
name = name.split(' ');
newName = name.shift();
if ( name.length ) newName += ' ' + name.pop()[0] + '.';
return newName;
}
这是小提琴:http: //jsfiddle.net/68JVS/
var names=n.split(' ');
var newname=names[0];
if (names.length>1) {
names.reverse();
var newname+=' '+names[0].substr(0,1)+'.';
}
如果只有一个名字“James B”,则返回“James”。如果是先生的名字。忽略中间名,同时考虑未提供姓氏。
var name_comps = name.split(' ');
var first_name = name_comps[0];
var last_init = '';
if(name_comps.length >0){
var last_init = name_comps[name_comps.length -1].charAt(0);
}
var userName = first_name + (last_init ? ' ' + last_init : '');
你可以使用一些这样的正则表达式:
var formattedName = name.replace(/([^ ]+).*([A-Z])[^ ]*$/,"$1 $2.");
但是,根据个人经验,将姓名/姓氏作为一个整体处理会引起很多问题,因为没有命名规则,尤其是当您有全球用户案例场景时。