Split Имя и фамилия, использующие javascript
У меня есть пользователь с именем Paul Steve Panakkal. Это длинное имя, которое не подходит для контейнера div. Так или иначе, чтобы разбить имя и фамилию на нем с помощью javascript или jquery.
Имя получено из PHP в переменную в JavaScript. Затем он разбивается с использованием JS.
Ответы
Ответ 1
Вам следует использовать метод split
:
'Paul Steve Panakkal'.split(' '); // retutrns ["Paul", "Steve", "Panakkal"]
Вы можете использовать его следующим образом:
'Paul Steve Panakkal'.split(' ').slice(0, -1).join(' '); // returns "Paul Steve"
'Paul Steve Panakkal'.split(' ').slice(-1).join(' '); // returns "Panakkal"
Так часто:
var firstName = fullName.split(' ').slice(0, -1).join(' ');
var lastName = fullName.split(' ').slice(-1).join(' ');
Ответ 2
Да:
var fullName = "Paul Steve Panakkal".split(' '),
firstName = fullName[0],
lastName = fullName[fullName.length - 1];
Литература:
Ответ 3
Я думаю, пришло время начать с регулярных выражений:)
"Paul Steve Panakkal".split(/(\s).+\s/).join("") // "Paul Panakkal"
Ответ 4
если вы предполагаете, что последнее слово - это фамилия, а одно имя - также имя...
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];
}
Ответ 5
Расширенная версия ответа Speransky Danil, которая обрабатывает случай, когда строка, содержащаяся в ней, содержит только одно слово.
/**
* 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(' ');
}
Ответ 6
Используйте этот код:
Вам нужно будет изменить строку: splitFullName("firstName","lastName","fullName");
и убедитесь, что она содержит правильные идентификаторы полей из вашей формы.
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 below with your form field ID's
splitFullName("firstName","lastName","fullName");
Источник: http://developers.marketo.com/blog/add-a-full-name-field-to-a-marketo-form/
Ответ 7
Остерегайтесь краевых шкафов, таких как только первое имя или два или более пробелов. Если вы хотите только разобрать имя и фамилию, это будет делать трюк (полное имя должно содержать не менее 1 символа, чтобы избежать того, что first_name установлено на пустую строку):
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;
Ответ 8
На испанском языке это может быть сложно, потому что у вас может быть второе необязательное имя и даже такие сложные фамилии, как "del Bosque" или "de la Hoya", гласные с акцентами и "ñ". Следующий javascript способен анализировать полное испанское имя, имея в виду, что вы пишете его, соблюдая верхний и нижний регистр. Он вернет json, дающий вам
- имя: 1 или 2 главных имени
- lastName: главное имя
- 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;
}
Фамилии необходимы, если вы укажете второе имя. Попробуйте:
- Eliecer Hernández Garbey
- Оскар де ла Хойя
- Хосе Джулиан Марти Перес
- Мануэль де Сеспедес-дель-Кастильо
- Calixto García Íñiguez
Даже попробуйте сложный, например
- Мария де ла Каридад-дель-Боске и Лойнас
Прокомментируйте свой опыт.
Ответ 9
Вам не нужно использовать какой-либо метод split и создавать ненужные массивы для этой операции. Просто используйте методы lastIndexOf и подстроки 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
Ответ 10
Я попробовал под кодом, и он работает классно для меня
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());
В приведенном выше примере:
(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 = "";
Ответ 11
используйте JS split
с пробелом в качестве разделителя.
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/split
Ответ 12
var firstName = fullName.split(" ")[0];
Ответ 13
Компонент сказал, что, если хотите, чтобы имя было "Павлом" и фамилией "Стив Панаккал"
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)
Ответ 14
Если вы имеете в виду последнее имя - это все имена после первого имени, просто используйте:
var name = "Paul Steve Panakkal";
var arrName = name.split(" ");
var firstName = arrName.slice(0, 1).join(' ');
var lastName = arrName.slice(1, arrName.length).join(' ');