wake-up-neo.com

Split Vorname und Nachname mit Javascript

Ich habe einen Benutzer mit einem Namen Paul Steve Panakkal . Es ist ein langer Name, der nicht zum div-Container passt. Gibt es also sowieso den Vor- und Nachnamen mit Javascript oder Javascript zu teilen?.

Der Name wird von PHP in eine Variable in JavaScript übernommen. Diese wird dann mit JS aufgeteilt.

30
Subin

Sie sollten die split-Methode verwenden:

'Paul Steve Panakkal'.split(' '); // retutrns ["Paul", "Steve", "Panakkal"]

Sie können es so verwenden:

'Paul Steve Panakkal'.split(' ').slice(0, -1).join(' '); // returns "Paul Steve"
'Paul Steve Panakkal'.split(' ').slice(-1).join(' '); // returns "Panakkal"

Also gemeinsam:

var firstName = fullName.split(' ').slice(0, -1).join(' ');
var lastName = fullName.split(' ').slice(-1).join(' ');
87
Danil Speransky

Ja:

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

Verweise:

32
David Thomas

Ich denke, es ist Zeit, mit regulären Ausdrücken anzufangen :) 

"Paul Steve Panakkal".split(/(\s).+\s/).join("") // "Paul Panakkal"
10
abuduba

Im Spanischen kann es schwierig sein, weil Sie einen zweiten optionalen Namen und sogar komplexe Nachnamen wie "del Bosque" oder "de la Hoya", Vokale mit Akzentzeichen und ñ haben können. Das folgende Javascript ist in der Lage, einen vollständigen spanischen Namen zu analysieren, da Sie in Count schreiben, ob Sie den Groß- und Kleinschreibung beachten. Es wird einen Json zurückgeben, der dich gibt

  1. name : 1 oder 2 Hauptnamen
  2. lastName : der Hauptname
  3. secondLastName : Der zweite Nachname

Der Code lautet:

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;
}

Die Nachnamen sind erforderlich, wenn Sie einen zweiten Namen angeben möchten. Probieren Sie es aus mit:

  • Eliecer Hernández Garbey 
  • Oscar de la Hoya 
  • José Julian Martí Pérez
  • Manuel de Céspedes del Castillo 
  • Calixto García Íñiguez

Probieren Sie auch ein komplexes aus

  • María de la Caridad del Bosque und Loynáz

Kommentieren Sie Ihre Erfahrungen damit.

7
EliuX

Erweiterte Version der Antwort von Speransky Danil, die den Fall behandelt, in dem der angegebene String nur ein Wort enthält.

/**
 * Gets the first name, technically gets all words leading up to the last
 * Example: "Blake Robertson" --> "Blake"
 * Example: "Blake Andrew Robertson" --> "Blake Andrew"
 * Example: "Blake" --> "Blake"
 * @param str
 * @returns {*}
 */
exports.getFirstName = function(str) {
    var arr = str.split(' ');
    if( arr.length === 1 ) {
        return arr[0];
    }
    return arr.slice(0, -1).join(' '); // returns "Paul Steve"
}

/**
 * Gets the last name (e.g. the last Word in the supplied string)
 * Example: "Blake Robertson" --> "Robertson"
 * Example: "Blake Andrew Robertson" --> "Robertson"
 * Example: "Blake" --> "<None>"
 * @param str
 * @param {string} [ifNone] optional default value if there is not last name, defaults to "<None>"
 * @returns {string}
 */
exports.getLastName = function(str, ifNone) {
    var arr = str.split(' ');
    if(arr.length === 1) {
        return ifNone || "<None>";
    }
    return arr.slice(-1).join(' ');
}
3
blak3r

wenn Sie davon ausgehen, dass das letzte Wort der Nachname ist und ein einzelner Wortname auch ein Nachname ist, dann ...

var items = theName.split(' '),
    lastName = items[items.length-1],
    firstName = "";

for (var i = 0; i < items.length - 1; i++) {
   if (i > 0) {
      firstName += ' ';
   }
   firstName += items[i];
}
3
Visual Micro

Ich habe unter Code versucht und es funktioniert cool für mich

var full_name = 'xyz abc pqr';
var name = full_name.split(' ');
var first_name = name[0];
var last_name = full_name.substring(name[0].length.trim());

Im obigen Beispiel:

(1)

If full_name = 'xyz abc pqr';
first_name = "xyz";
last_name = "abc pqr";

(2)

If `full_name = "abc"`:
Then first_name = "abc";
and last_name = "";
3
Akash Jain

Achten Sie auf Edge-Cases, wie z. B. nur ein Vorname oder zwei oder mehr Leerzeichen. Wenn Sie nur den Vor- und Nachnamen analysieren möchten, ist dies der Trick (der vollständige Name sollte immer mindestens ein Zeichen enthalten, um zu vermeiden, dass first_name auf eine leere Zeichenfolge gesetzt wird):

var full_name_split = "Paul Steve Panakkal".split(" ");
var first_name = full_name_split[0];
var last_name = full_name_split.length > 1 ? full_name_split[full_name_split.length - 1] : null;
2
Nick Schwab

Verwenden Sie diesen Code:

Sie müssen die Zeile ändern: splitFullName("firstName","lastName","fullName"); und sicherstellen, dass sie die richtigen Feld-IDs aus Ihrem Formular enthält.


function splitFullName(a,b,c){
    String.prototype.capitalize = function(){
        return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); } );
    };
    document.getElementById(c).oninput=function(){
        fullName = document.getElementById(c).value;
        if((fullName.match(/ /g) || []).length ===0 || fullName.substring(fullName.indexOf(" ")+1,fullName.length) === ""){
            first = fullName.capitalize();;
            last = "null";
        }else if(fullName.substring(0,fullName.indexOf(" ")).indexOf(".")>-1){
            first = fullName.substring(0,fullName.indexOf(" ")).capitalize() + " " + fullName.substring(fullName.indexOf(" ")+1,fullName.length).substring(0,fullName.substring(fullName.indexOf(" ")+1,fullName.length).indexOf(" ")).capitalize();
            last = fullName.substring(first.length +1,fullName.length).capitalize();
        }else{
            first = fullName.substring(0,fullName.indexOf(" ")).capitalize();
            last = fullName.substring(fullName.indexOf(" ")+1,fullName.length).capitalize();
        }
        document.getElementById(a).value = first;
        document.getElementById(b).value = last;
    };
    //Initial Values
    if(document.getElementById(c).value.length === 0){
        first = document.getElementById(a).value.capitalize();
        last = document.getElementById(b).value.capitalize();
        fullName =  first + " " + last ;
        console.log(fullName);
        document.getElementById(c).value = fullName;
    }
}

//Replace the ID's below with your form's field ID's
splitFullName("firstName","lastName","fullName");

Quelle: http://developers.marketo.com/blog/add-a-full-name-field-to-a-marketo-form/

2
Yanir Calisar

Sie müssen keine split -Methode verwenden und für diesen Vorgang unnötige Arrays erstellen. Verwenden Sie einfach die Methoden lastIndexOf und substring von Javascript.

var s = "Paul Steve Panakkal";
var a = s.lastIndexOf(' '); // last occurence of space
var b = s.substring(0, a); // Paul Steve
var c = s.substring(a+1); // Panakkal
1
nonkertompf

const fullName = 'Paul Steve Panakkal'.split(' ');
const lastName = fullName.pop(); // 'Panakkal'
const firstName = fullName.join(' '); // 'Paul Steve'
console.log(firstName);
console.log(lastName);

0
dayitv89
var fullName = "Paul Steve Panakkal";

Sie können die Split-Funktion verwenden, um den vollständigen Namen und dann das Ergebnis aufzuteilen, indem Sie Elemente in einem Array oder einer Liste anzeigen.

Dies geschieht, wenn Sie die Split-Funktion verwenden.

fullName.split(" ")

["Paul", "Steve", "Panakkal"]

Dies wird in keiner Variablen gespeichert. Sie können die Split-Funktion ausführen und einer so definierten Variablen ein Element zuweisen.

var firstName = fullName.split(" ")[0];

var lastName = fullName.split(" ")[1];

var otherName = fullName.split(" ")[2];
0
Josh
0
techie_28

Auf diese Weise sind sowohl firstName als auch lastName immer korrekt

var names = fullName.split(' ');
if (!names || names.length <= 1) {
   firstName = this.name;
   lastName = '';
} else {
   firstName = names.slice(0, -1).join(' ');
   lastName = names.slice(-1).join(' ');
}
0
Philippe Genois

Ein Comenter sagte, Was wäre wenn der Vorname "Paul" und der Nachname "Steve Panakkal" sein soll? 

var name = "Paul Steve Panakkal" // try "Paul", "Paul Steve"
var first_name = name.split(' ')[0]
var last_name = name.substring(first_name.length).trim()
console.log(first_name)
console.log(last_name)

0

Wenn Sie meinen, dass der Nachname aus dem Vornamen besteht, verwenden Sie einfach:

var name = "Paul Steve Panakkal";
var arrName = name.split(" ");
var firstName = arrName.slice(0, 1).join(' ');
var lastName = arrName.slice(1, arrName.length).join(' ');
0
var firstName = fullName.split(" ")[0];
0