给定一个全名变量如何返回第一个名字+最后一个初始w JS只

时间:2012-06-06 01:16:51

标签: javascript regex

给出一个JS变量:

var n = James Bond;
var n = James Earl Bond;
var n = James;

如何返回名字加上最后一个名字?虽然会忽略中间名和他们唯一的名字的可能性吗?有人在此之前优雅地解决了这个问题吗?

由于

4 个答案:

答案 0 :(得分:2)

function formatName(name)
{
    var newName;

    name = name.split(' ');
    newName = name.shift();

    if ( name.length ) newName += ' ' + name.pop()[0] + '.';

    return newName;
}

这是小提琴:http://jsfiddle.net/68JVS/

答案 1 :(得分:0)

var names=n.split(' ');

var newname=names[0];

if (names.length>1) {
    names.reverse();
    var newname+=' '+names[0].substr(0,1)+'.';
}

如果只有一个名字'James B.',则返回'James'如果是一个sirname。忽略中间名,同时不考虑提供的姓氏。

答案 2 :(得分:0)

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 : '');

答案 3 :(得分:0)

你可以使用这样的正则表达式:

var formattedName = name.replace(/([^ ]+).*([A-Z])[^ ]*$/,"$1 $2.");

然而,对于个人经验而言,将名称/姓氏作为整个字符串处理会导致很多问题,因为没有命名规则,尤其是当您有全球用户案例场景时。