Javascript将字符串分隔为不同的变量

Javascript将字符串分隔为不同的变量,javascript,string,Javascript,String,我正在寻找一个字符串,找到其中的所有空格,并将其分离成不同的变量。我知道我可以使用.split,但这不会产生新的变量。我宁愿不使用jQuery或其他JavaScript库,但如果我不得不这样做,那也不是最糟糕的事情。谢谢 例如,John M Peters将生成变量fname:John、mname:M和lname: 彼得斯 .split只返回一个数组,因此您可以使用该数组轻松地分配新变量 var str = "John M Peters"; var fname = str.split(" ")[0

我正在寻找一个字符串,找到其中的所有空格,并将其分离成不同的变量。我知道我可以使用.split,但这不会产生新的变量。我宁愿不使用jQuery或其他JavaScript库,但如果我不得不这样做,那也不是最糟糕的事情。谢谢

例如,John M Peters将生成变量fname:John、mname:M和lname: 彼得斯

.split只返回一个数组,因此您可以使用该数组轻松地分配新变量

var str = "John M Peters";
var fname = str.split(" ")[0];
var mname = str.split(" ")[1];
var lname = str.split(" ")[2];
.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);

此解决方案也适用于没有中间首字母的字符串。您可以在此处看到此示例:

您可以按如下方式拆分字符串:

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);

此解决方案也适用于没有中间首字母的字符串。您可以在这里看到这个示例:

我将沿着这些线创建一个函数。这只是一个快速和肮脏的,不做任何验证,我留给你

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"

我将沿着这些线创建一个函数。这只是一个快速和肮脏的,不做任何验证,我留给你

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>

这是不可移植的,因此不适合web编程。但是,如果您正在为firefox或thunderbird等编写插件,那么有许多有趣的语言扩展可用。

除了其他人指出的答案之外,我想指出,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>

这是不可移植的,因此不适合web编程。但是,如果您正在为firefox或thunderbird等编写插件,那么有许多有趣的语言扩展可用。

如果您事先不知道字符串中有多少空格,可以执行以下操作:

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]);}

如果事先不知道字符串中有多少空格,可以执行以下操作:

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]);}

啊,我非常期待未来,到时候我们将能够做到让[fname,mname,lname]=str.split;我想你至少可以在咖啡脚本中这样做:[fname,mname,lname]=John M Peters.split''啊,我很期待未来,到时候我们可以让[fname,mname,lname]=str.split;我想你至少可以在咖啡脚本中这样做:[fname,mname,lname]=John M Peters.split''所有名字都有中间首字母吗?不,没有。我在拆分前做了一个检查,看看是否有中间的首字母。所有的名字都有中间的首字母吗?没有。在拆分之前我做了一个检查,看看是否有中间的首字母。正确,因此我对可移植性提出了警告;P但是OP没有指定这个JS代码的用途。对于一个插件或类似的东西来说,这是完全合适的。正确,因此我对可移植性提出了警告;P但是OP没有指定这个JS代码的用途。对于插件之类的东西来说,这是完全合适的。