2014-01-10 164 views
0

我有一个文本字段,我在其中编写员工的全名。我想检索第一个单词作为名字,最后一个单词作为姓,其余中间字符串作为中间名。例如。对于将字符串拆分为3个子字符串jquery/javascript

ramesh suresh mahesh roshan 

名字应该是ramesh,中间名suresh mahesh和姓氏为roshan

有没有什么办法可以使用jquery/javascript来做到这一点?请帮忙!

+0

划分规则是什么 –

+0

假设你将数据库值存储在一个var x(数组)中,你可以用'var x = x.split(“”); var a = x1 [0];我可以看到像''''这样的东西,所以a = ramesh,b = suresh ... d = roshan –

+1

var b = x [1]; var c = x [2]; var d = x [3] 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

@彼得这可以通过添加一个条件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 

编辑:加入|| ''回退用于lastName的的情况下,全名仅具有1个字(以及,主要用于paranoic审阅XD)

干杯)

+0

*只是为了让你知道*你需要包含一个条件语句到姓氏,否则它会失败的“ramesh”http: //jsfiddle.net/fFPkx/5/ – Praveen

0

JavaScript String split() function

split()方法用于将字符串拆分为一个子字符串数组,并返回新的数组。

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

RE的结果将是与该值的数组:

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警报与第一,中间名和姓。

相关问题