2014-01-10 3 views
0

У меня есть текстовое поле, в котором я пишу полное имя сотрудника. Я хочу получить первое слово как имя, последнее слово как фамилию, а оставшуюся среднюю строку - как среднее имя. Напр. дляРазбиение строки на 3 подстроки jquery/javascript

ramesh suresh mahesh roshan 

первое имя должно быть ramesh, отчество как suresh mahesh и фамилию как roshan.

Есть ли способ сделать это с помощью jquery/javascript? Пожалуйста помоги!

+0

Что такое правило для разделения –

+0

Предположим, что u хранит значение базы данных ur в массиве var x (array), u может разделяться на 'var x = x.split (" "); var a = x1 [0]; var b = x [1]; var c = x [2]; var d = x [3]; 'so a = ramesh, b = suresh ... d = roshan –

+1

из того, что я вижу нечто вроде' ramesh suresh mahesh roshan'.match (/ (. *?) \ s (. *) \ s (. *) /) ' –

ответ

-2

Вот это подход

  1. разбить строку на основе пространства с помощью string.split(" ").

Тогда обычно

  1. 0-й индекс - представляет имя
  2. (last - 1)-й индекс - представляет Фамилия
  3. Так отчества Я iterating the remaining index and concatenating друг друга.

var name = "ramesh suresh mahesh roshan"; 
var d = name.split(" ") 

console.log("first Name : " + d[0]); 
console.log("Last Name : " + d.length != 1 ? d[d.length -1] : ""); 
var mid = ""; 
for (var i = 1; i <= d.length - 2; i++) { 
    mid = mid + " " + d[i]; 
} 
console.log("middle name: " +mid); 

JSFiddle

+1

Это немного хрупко, потому что оно сломается, если есть только первое и последнее имя или даже просто имя. – Peter

+0

@Peter это можно преодолеть, добавив условный http://jsfiddle.net/fFPkx/3/ – Praveen

+1

@Peter. В моей форме он обязателен для записи имени и фамилии. Так оно работает для меня. –

0

Это может сделать трюк

<script> 
     function getnam(){     
      var val = $("#txtval").val();    
      var dssr = val.split(" "); 
      var len = dssr.length;     
      alert("First Name:" + dssr[0]);    
      var mn = ""; 
      if(len>2){ 
       for(var i=1;i<len-1;i++){ 
        mn= mn + " " + dssr[i]; 
       } 
      } 
      alert("Middle Name:" + mn); 
      if(len>1){ 
       alert("Last Name:" + dssr[len-1]); 
      } 
     } 
    </script> 


    <input type="text" id="txtval"/> 
    <input type="button" onclick="getnam()" /> 
1

Ниже кода поможет вам

var temp = 'ramesh suresh mahesh roshan'; 
var fullname = temp.split(" "); 
var firsname=''; 
var middlename=''; 
var lastname = ''; 
firstname=fullname[0]; 
lastname=fullname[fullname.length-1]; 
for(var i=1; i < fullname.length-1; i++) { 
    middlename = middlename +" "+ fullname[i]; 
} 
alert(firstname); 
alert(middlename); 
alert(lastname); 

http://jsfiddle.net/c9h74/

3

С этим:

var fullName = "ramesh suresh mahesh roshan", 
    parts = fullName.split(/\s+/), //Divide by one or more spaces 
    firstName = parts.shift(),  //Extract first word 
    lastName = parts.pop() || '',   //Extract last word 
    middleName = parts.join(' '); //All the rest 

EDIT: добавил || '' запасной вариант для LastName в случае полное имя имеет только 1 слово (ну, в основном для параноика рецензентов XD)

Cheers;)

+0

* просто чтобы вы знали *, что вам нужно включить условный оператор в фамилию, иначе он не сработает для «ramesh» http: //jsfiddle.net/fFPkx/5/ – Praveen

0

JavaScript String split() function

Метод split() используется для разбиения строки на массив подстрок и возвращает новый массив.

var str = "ramesh suresh mahesh roshan"; 
var res = str.split(" "); 

В результате Рез будет массив со значениями:

ramesh,suresh,mahesh,roshan 

Определение: Метод сплит() используется для разбиения строки на массив подстрок и возвращает новый массив.

Совет: Если в качестве разделителя используется пустая строка (""), строка разделяется между каждым символом.

Примечание: Метод split() не изменяет исходную строку.

Синтаксис: string.split(separator,limit)

Значения параметров:

  • сепаратор - необязательно. Указывает символ или регулярное выражение для использования для разделения строки. Если опущено, будет возвращена вся строка (массив с одним элементом).
  • limit- Дополнительно. Целое число, которое определяет количество разделов, элементы после предела разделения не будут включены в массив.

Ответ на ваш вопрос:

Как и многие люди уже дали так много правильного ответа еще я хотел бы дать некоторый свет от моего конца.

JavaScript На основании ответа

function fnStringSplitter(fullName,separator){ 
var mName = ""; //Middle Name 
var splittedArr = fullName.split(separator); 
for (var i = 1; i <= splittedArr.length - 2; i++) { 
    mName = mName + " " + splittedArr[i]; 
} 
alert("First Name : " + splittedArr[0]); 
alert("Middle Name : " + mName); 
alert("Last Name : " + splittedArr[splittedArr.length - 1]); 

}

Вызова к функции:fnStringSplitter("ramesh suresh mahesh roshan"," ");

Выход: 3 оповещения с первым, средним и последним именем.

Смежные вопросы