Как разбить одно значение массива на две строки на базе индекса в react native

#javascript #reactjs #react-native #ecmascript-6

#javascript #reactjs #react-native #ecmascript-6

Вопрос:

Вот мой код, я пытаюсь разбить одно полное имя на две части FirstName и LastName .Но это не то, что мне нужно.

 Like if   fullName='Sachin Ramesh Tendulkar' . then
firstName = Sachin Ramesn
lastName = Tendulkar   if

fullName='Sachin Tendulkar' . then
firstName = Sachin  
lastname = Tendulkar

if fullName='Sachin  Ramesh Tendulkar Second' . then

firstName =Sachin  Ramesh Tendulkar
lastName= Second

   this.state={
    fullName:'Sachin Ramesh Tendulkar'
    let fullName = this.state.fullName.split(' ');
    const firstName = fullName.shift()
    const lastName = fullName.join(' ')
    --------------------------------------------
    firstName = Sachin
    lastName = Ramesh Tendulkar .
    but I have to show the result like below ..
    ------------------------------
    firstName = Sachin Ramesh
    lastName = Tendulkar
     
  

Пожалуйста, предложите . Спасибо

Ответ №1:

Вы можете сделать это таким образом:-

 [fName, mName, lName] = nameString.split(" ");
if(!lName) lName = mName
else fName = fName mName
  

Итак, если last name равно null или не определено, мы присваиваем last name значение среднего имени.
В противном случае имя будет равно имени отчеству.

Ответ №2:

shift удалит первый элемент. Я думаю, что вы хотите pop получить последний элемент, чтобы изолировать последнее имя. Обратите внимание, что это прямые мутации

 var fullName = "Sachin  Ramesh Tendulkar Second".split(' ');
var lastName = fullName.pop();
var firstName = fullName.join(' ');

console.log(`firstName: `, firstName);
console.log(`lastName: `, lastName);  

Ответ №3:

Как насчет этого?

 const name = "Sachin Ramesh Tendulkar"
const lstSpc = name.lastIndexOf(" ")
const nameParts = [name.substring(0, lstSpc), name.substring(lstSpc)] 
console.log(nameParts)
  

Ответ №4:

Попробуйте это.

 name = 'ABC XYZ GHI';
array = name.split(' ');
lastName = array.pop()
firstName = array.join(' ')
  

Ответ №5:

 var fullName = "Sachin  Ramesh Tendulkar Second";

var firstName = fullName.substring(0, fullName .lastIndexOf(" ")   1);
var lastName = fullName.substring(fullName .lastIndexOf(" ")   1);


console.log(`firstName: `, firstName);
console.log(`lastName: `, lastName);  

Комментарии:

1. FullName.substring не является ошибкой функции, которая появляется в react native

2. Полное имя не является строкой?

Ответ №6:

Вы можете использовать это регулярное /(.*)s([a-zA-Z] )$/ выражение и вызвать exec метод по этому шаблону, чтобы получить всю группу захвата

 const regEx = /(.*)s([a-zA-Z] )$/;

const matches = regEx.exec("Sachin  Ramesh Tendulkar Second");

const firstname = matches[1];
const lastname = matches[2];

console.log(firstname);
console.log(lastname);  

Вы можете видеть, что регулярное выражение применяется ко всем типам комбинаций имен в regex101 https://regex101.com/r/M53cmm/1

Ответ №7:

 const name = 'Sachin Ramesh Tendulkar Second'
const  array = name.split(' ');
const firstName = array[0];
const midalName = array[1]
const lastName = array[2]
const newFirstNAme = firstName   ' '   midalName
console.log(newFirstNAme)
console.log(lastName)  

Ответ №8:

проверено и протестировано

  const name = "Sachin Ramesh Tendulkar"
        const array  = name.split(' ')
        let firstname = ''
        let lastname = ''
        if (array.length amp;amp; array.length > 1) {
            array.forEach((item, i)  => {
                if ((array.length - 1) !== i) {
                    if (firstname) {
                        firstname = firstname   " "   item
                    } else {
                        firstname = item
                    }
                    
                }
            })
             lastname = array[array.length - 1]
        }
        if (array.length === 1) {
        firsname = array[0]
        }