我想根据具有jquery的人的名称创建用户名。
我不知道如何开始,我正在考虑拆分名称,从每个部分获取第一个字母并与姓氏连接。但如果这个名字有很多单词,我就不知道怎么做。
例如我的名字
'First' -> username 'first'
'First Second' -> username 'fsecond'
'First Second Third' -> username 'fsthird'
代码(只做第一种情况,但如果有很多中间名怎么办?)
function createUsername(fullName) {
var piece;
var size;
piece = fullName.split(' ');
size = piece.length;
if(size == 1)
$("#userName").val(piece[0]);
}
<input type='text' onKeyUp = 'createUsername(this.value)'/>
<input type='text' name='userName' id='userName' />
答案 0 :(得分:2)
你可以这样做
function createUsername(name) {
return name.split(" ").map(function(v, i, a) {
return i !== (a.length - 1) ? v[0] : v;
}).join().toLowerCase();
}
答案 1 :(得分:1)
你可以取你的split数组的姓氏,然后迭代它:
function createUsername(fullName) {
var piece;
var size;
piece = fullName.split(' ');
size = piece.length;
var name = piece[size-1].toLowerCase();
for (var i = size -2; i > 0; i--) {
name = piece[i][0].toLowerCase() + name;
}
$("#userName").val(name);
}
答案 2 :(得分:1)
你在正确的轨道上,根据空格分割字符串以获取用户的名字,但之后你需要循环以获得姓氏前所有名字的第一个字母。
function createUsername(fullName) {
var piece,
username = [];
piece = fullName.split(' ');
if (piece.length > 1) {
for (var i = 0; i < piece.length; i++) {
if (i < piece.length - 1) {
username.push(piece[i].charAt(0));
} else {
username.push(piece[i]);
}
}
} else {
username.push(piece[0]);
}
$("#userName").val(username.join(""));
}
答案 3 :(得分:1)
编辑,更新;添加了包括四个或更多单词的名称处理
尝试(v2)
function createUserName(fullName) {
var s = fullName.toLowerCase().match(/[a-z]+/g)
, l = s.length, _s = "", y = -1;
do { _s += s[++y][0] } while (_s.length < l -1);
return l > 1 ? _s + s[l -1] : fullName;
};