Javascript 将字符串转换为对象
好吧,我知道了Javascript 将字符串转换为对象,javascript,node.js,Javascript,Node.js,好吧,我知道了 var str = {}; string.split(' ').forEach(function(val, idx) {str[++idx] = val;}); 但若字符串是“Hello world‘how r u’”,它将返回 ["1":"Hello","2":"world","3":"how","4":"r","5":"u"] 我要它回来 ["1":"Hello","2":"world","3":"how r u"] 所以,介于“”和“”之间的是1项,我如何使它这样做?
var str = {}; string.split(' ').forEach(function(val, idx) {str[++idx] = val;});
但若字符串是“Hello world‘how r u’”,它将返回
["1":"Hello","2":"world","3":"how","4":"r","5":"u"]
我要它回来
["1":"Hello","2":"world","3":"how r u"]
所以,介于“”和“”之间的是1项,我如何使它这样做?
顺便说一句,我使用的是node.js,而不是node.js专家,所以我不知道在split函数中使用正则表达式是否有一个好的解决方案,但是一个解决方案可能是编写一个函数,首先根据"或"性格"。这将产生一个字符串数组,您可以将其进一步拆分为更小的块。感谢louis on swiftirc#javascript
var out = {}; 'this is "a test" with a "random string of words" 34iuv 38vy 3b8u nuhvbe7yvb 73rvy dsuh bue "f34fdvedfg wr edf Fw efwef" efg3f'.match(/\w+|"(.[^"]+)"/g).forEach(function (str, idx) { out[++idx] = str.replace(/^"|"$/g,''); });
console.log(out);
>> {"1":"this","2":"is","3":"a test","4":"with","5":"a","6":"random string of words","7":"34iuv","8":"38vy","9":"3b8u","10":"nuhvbe7yvb","11":"73rvy","12":"dsuh","13":"bue","14":"f34fdvedfg wr edf Fw efwef","15":"efg3f"}
第二个返回应该是[“1”:“Hello”,“2”:“world”,“3”:“how”,“4”:“r”,“5”:“u'”),您可以按空格分割,在处理方法中,忽略以(字符#1)开头的分割,直到找到结束“,这应该适用于简单的对象,但不适用于嵌套的“您想要的结果实际上是这样的Javascript对象:
{“1”:“Hello”,“2”:“world”,“3”:“how r u”}
还是希望结果是数组?或者,只要我可以单独访问每个世界或字符串。