我正在尋找一個字符串,並找到其中的所有空格,並將其分隔爲不同的變量。我知道我可以使用.split()
但不會產生新的變量。我寧願不使用jQuery或其他JavaScript庫,但如果必須的話,它不會是最糟糕的事情。謝謝!Javascript將字符串分成不同的變量
實施例,John M Peters
將導致變量fname: John
,mname: M
和lname: Peters
。
我正在尋找一個字符串,並找到其中的所有空格,並將其分隔爲不同的變量。我知道我可以使用.split()
但不會產生新的變量。我寧願不使用jQuery或其他JavaScript庫,但如果必須的話,它不會是最糟糕的事情。謝謝!Javascript將字符串分成不同的變量
實施例,John M Peters
將導致變量fname: John
,mname: M
和lname: Peters
。
.split()
只是返回一個數組,這樣你就可以使用,可以輕鬆地分配新的變量...
var str = "John M Peters";
var fname = str.split(" ")[0];
var mname = str.split(" ")[1];
var lname = str.split(" ")[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/
我會沿着這些線創建一個函數。這只是一個快速和骯髒,並沒有做任何驗證,我把它留給你。
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"
除了答案的人指出的那樣,我想指出的是,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等插件,則可以使用許多有趣的語言擴展。
這不是一個跨瀏覽器兼容的系統,對嗎? – 2012-02-23 03:45:48
正確,因此我關於可移植性的警告; p。但OP沒有指定這個JS代碼的目的。對於一個插件或者它是完全合適的。 – FatalError 2012-02-23 03:46:54
如果你不知道有多少空間有字符串中,事前,你可以做到以下幾點:
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]);}
是否所有的名字總是有一箇中間名? – Paul 2012-02-23 03:45:32
不,他們沒有。我正在做一個檢查,然後再對其進行分割,看看是否有中間的首字母。 – 2012-02-23 03:46:28