0

次のようなJS変数が与えられます:

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

名と最後のイニシャルを返すにはどうすればよいですか?ミドルネームと彼らがファーストネームだけである可能性を無視することを説明しながら?誰かが前にこれをエレガントに解決しますか?

ありがとう

4

4 に答える 4

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/

于 2012-06-06T01:21:28.880 に答える
0

次のような正規表現を使用できます。

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

ただし、個人的な経験では、名前/名前を文字列全体として扱う場合、特に世界中のユーザーのケースシナリオがある場合は、名前付けのルールがないため、多くの問題が発生します。

于 2012-06-06T01:32:55.043 に答える
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 : '');
于 2012-06-06T01:25:55.107 に答える
0
var names=n.split(' ');

var newname=names[0];

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

'James B.' という名前が 1 つしかない場合は、'James' を返します。姓なら。ミドル ネームは無視されますが、ラスト ネームが指定されていない場合は考慮されます。

于 2012-06-06T01:24:03.403 に答える