2012-02-23 27 views
0

我正在尋找一個字符串,並找到其中的所有空格,並將其分隔爲不同的變量。我知道我可以使用.split()但不會產生新的變量。我寧願不使用jQuery或其他JavaScript庫,但如果必須的話,它不會是最糟糕的事情。謝謝!Javascript將字符串分成不同的變量


實施例,John M Peters將導致變量fname: Johnmname: Mlname: Peters

+0

是否所有的名字總是有一箇中間名? – Paul 2012-02-23 03:45:32

+0

不,他們沒有。我正在做一個檢查,然後再對其進行分割,看看是否有中間的首字母。 – 2012-02-23 03:46:28

回答

4

.split()只是返回一個數組,這樣你就可以使用,可以輕鬆地分配新的變量...

var str = "John M Peters"; 
var fname = str.split(" ")[0]; 
var mname = str.split(" ")[1]; 
var lname = str.split(" ")[2]; 
+0

好的,謝謝,看起來好像會很完美 – 2012-02-23 03:34:32

+2

啊,我很期待未來,當我們能夠做'let [fname,mname,lname] = str.split(「」);' – Domenic 2012-02-23 03:35:45

+0

I認爲你至少可以在coffee-script中做這樣的事情:'[fname,mname,lname] =「John M Peters」.split('')' – mportiz08 2012-02-23 03:41:14

2

可以分割字符串,像這樣:

var name = 'John M Peters'; 
var arr = name.split(' '); 

var obj = {fname: arr[0]}; 
if(arr.length === 1) { 
    obj.lname = arr[1]; 
} else { 
    obj.mname = arr[1]; 
    obj.lname = arr[2]; 
} 

console.log(obj.fname); 
console.log(obj.mname); //could be undefined 
console.log(obj.lname); 

該解決方案還將用於工作也沒有中間首字母的字符串。你可以在這裏看到這個例子:http://jsfiddle.net/nDwmY/2/

0

我會沿着這些線創建一個函數。這只是一個快速和骯髒,並沒有做任何驗證,我把它留給你。

function parse_name(theName) { 
    var nameSplit = theName.split(" "); 

    var nameFields = { 
      first : nameSplit[0], 
      middle : nameSplit[1], 
      last : nameSplit[2] 
     }; 

    return nameFields; 
} 

然後你可以隨時調用它來解析一個名字。

var parsedName = parse_name("John M Smith"); 

alert(parsedName.first); // Should alert "John" 
alert(parsedName.middle); // Should alert "M" 
alert(parsedName.last); // Should alert "Smith" 
0

除了答案的人指出的那樣,我想指出的是,Mozilla的JavaScript引擎(SpiderMonkey的)支持拆解作業:

<script language="javascript1.7"> 
    var s = 'John M. Peters'; 
    var fname, mname, lname; 

    [fname, mname, lname] = s.split(/\s+/); 
    alert('fname = ' + fname + ', mname = ' + mname + ', lname = ' + lname); 
</script> 

這是便攜,所以不適合網頁編程。但是,如果您正在編寫firefox或thunderbird等插件,則可以使用許多有趣的語言擴展。

+0

這不是一個跨瀏覽器兼容的系統,對嗎? – 2012-02-23 03:45:48

+1

正確,因此我關於可移植性的警告; p。但OP沒有指定這個JS代碼的目的。對於一個插件或者它是完全合適的。 – FatalError 2012-02-23 03:46:54

0

如果你不知道有多少空間有字符串中,事前,你可以做到以下幾點:

var str = "How are you doing today, my dear friend?"; 
numberspaces = str.split(" ").length; //you know how many spaces there are 
words=str.split(" ");     //it creates an array of words 
var i; 
for (i = 0; i < numberspaces; i++){ 
console.log(words[i]);} 
相關問題