我希望获取一个字符串并找到其中的所有空格并将其分成不同的变量。我知道我可以使用.split()
,但这不会产生新变量。我宁愿不使用jQuery或其他JavaScript库,但如果必须,它不会是最糟糕的事情。谢谢!
示例,John M Peters
会产生变量fname: John
,mname: M
和lname:
Peters
。
答案 0 :(得分:4)
.split()
只返回一个数组,因此您可以使用该数据轻松分配新变量...
var str = "John M Peters";
var fname = str.split(" ")[0];
var mname = str.split(" ")[1];
var lname = str.split(" ")[2];
答案 1 :(得分: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/
答案 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"
答案 3 :(得分: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等编写插件,那么可以使用许多有趣的语言扩展。
答案 4 :(得分: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]);}