使用javascript拆分名字和姓氏

Sub*_*bin 42 html javascript string parsing

我有一个名为Paul Steve Panakkal的用户.这是一个很长的名称,它不适合div容器.所以无论如何使用javascript或jquery从中分割出名字和姓氏.

该名称是从PHP获得的JavaScript变量.然后使用JS将其拆分.

Dan*_*sky 103

你应该使用split方法:

'Paul Steve Panakkal'.split(' '); // retutrns ["Paul", "Steve", "Panakkal"]
Run Code Online (Sandbox Code Playgroud)

你可以这样使用它:

'Paul Steve Panakkal'.split(' ').slice(0, -1).join(' '); // returns "Paul Steve"
'Paul Steve Panakkal'.split(' ').slice(-1).join(' '); // returns "Panakkal"
Run Code Online (Sandbox Code Playgroud)

所以共同点:

var firstName = fullName.split(' ').slice(0, -1).join(' ');
var lastName = fullName.split(' ').slice(-1).join(' ');
Run Code Online (Sandbox Code Playgroud)

  • `.split("").sllice(0,-1).join('')`的第一个名称的问题是,如果字符串只包含一个字母,则无法给出名字. (5认同)
  • 使用你的方法名字将是"保罗史蒂夫"和姓氏"Panakkal".如果想要名字是"Paul"和姓氏"Steve Panakkal" - 这意味着姓氏将是第一个空格后的所有内容.怎么做? (3认同)
  • 此外,如果存在空白,会发生什么?最好在分割/切片之前先“修剪”字符串..就像`str.replace(/ \ s + / g,'')` (2认同)

Dav*_*mas 36

是:

var fullName = "Paul Steve Panakkal".split(' '),
    firstName = fullName[0],
    lastName = fullName[fullName.length - 1];
Run Code Online (Sandbox Code Playgroud)

参考文献:

  • 如果您只使用"Paul"作为全名,它将使用Paul作为名字和姓氏...... (4认同)
  • 获得比其他人更有效的解决方案+1 (3认同)

Pav*_*lov 16

最常见的解决方案,我们总是将第一个单词作为名字,其余的作为姓氏:

const splitName = (name = '') => {
  const [firstName, ...lastName] = name.split(' ').filter(Boolean);
  return {
    firstName: firstName,
    lastName: lastName.join(' ')
  }
}

console.log(splitName('Jon  Snow'));

console.log(splitName(' Jon '));

console.log(splitName(' Jon The    White Wolf '));
Run Code Online (Sandbox Code Playgroud)


abu*_*uba 12

我想,是时候开始使用正则表达式了:)

"Paul Steve Panakkal".split(/(\s).+\s/).join("") // "Paul Panakkal"
Run Code Online (Sandbox Code Playgroud)

  • 只要您不支持西班牙语名称,这将正常工作。 (2认同)

Eli*_*iuX 8

在西班牙语中它可能很棘手,因为你可能有第二个可选名称甚至复杂的姓氏,如"del Bosque"或"de la Hoya",带有重音符号的元音和ñ.下面的javascript可以解析一个完整的西班牙语名称,在计算你正在写它尊重大小写的情况.它将返回一个json给你

  1. 名称:1或2个主要名称
  2. lastName:主要姓氏
  3. secondLastName:第二个姓氏

代码是:

function parseName(input) {
        var fullName = input || "";
        var result = {};

        if (fullName.length > 0) {
            var nameTokens = fullName.match(/[A-ZÁ-ÚÑÜ][a-zá-úñü]+|([aeodlsz]+\s+)+[A-ZÁ-ÚÑÜ][a-zá-úñü]+/g) || [];

            if (nameTokens.length > 3) {
                result.name = nameTokens.slice(0, 2).join(' ');
            } else {
                result.name = nameTokens.slice(0, 1).join(' ');
            }

            if (nameTokens.length > 2) {
                result.lastName = nameTokens.slice(-2, -1).join(' ');
                result.secondLastName = nameTokens.slice(-1).join(' ');
            } else {
                result.lastName = nameTokens.slice(-1).join(' ');
                result.secondLastName = "";
            }
        }

        return result;
}
Run Code Online (Sandbox Code Playgroud)

如果要指定第二个名称,则需要姓氏.尝试一下:

  • EliecerHernándezGarbey
  • 奥斯卡德拉霍亚
  • JoséJulianMartíPérez
  • ManueldeCéspedesdelCastillo
  • CalixtoGarcíaÍñiguez

即使尝试复杂的喜欢

  • Maríadela Caridad del Bosque和Loynáz

评论您的经历.