使用javascript提取特定子字符串?

时间:2012-12-12 16:49:28

标签: javascript

如果我有以下字符串:

mickey mouse WITH friend:goofy WITH pet:pluto

javascript中获取该字符串并将所有“key:value”对提取到某个对象变量中的最佳方法是什么?冒号是分隔符。虽然我可能会或可能不会保证WITH会在那里。

5 个答案:

答案 0 :(得分:1)

myString.split(/\s+/).reduce(function(map, str) {
    var parts = str.split(":");
    if (parts.length > 1)
        map[parts.shift()] = parts.join(":");
    return map;
}, {});

答案 1 :(得分:1)

var array = str.match(/\w+\:\w+/g);

然后使用":"拆分数组中的每个项目,以获取键值对。

以下是代码:

function getObject(str) {
  var ar = str.match(/\w+\:\w+/g);
  var outObj = {};
  for (var i=0; i < ar.length; i++) {
    var item = ar[i];
    var s = item.split(":");
    outObj[s[0]] = s[1];
  }
  return outObj;  
}

答案 2 :(得分:0)

也许像

"mickey WITH friend:goofy WITH pet:pluto".split(":")

它将返回数组,然后循环遍历数组。

答案 3 :(得分:0)

字符串模式必须以一种或另一种方式保持一致。 使用javascript的split函数并按共同出现的单词拆分(我们说空间Atleast) 然后,您需要使用:as key来拆分它们,并将所需的值转换为对象。 希望这是你渴望的。

答案 4 :(得分:0)

你可以这样做,例如:

    var myString = "mickey WITH friend:goofy WITH pet:pluto";

    function someName(str, separator) {
        var arr = str.split(" "),
            arr2 = [],
            obj = {};
        for(var i = 0, ilen = arr.length; i < ilen; i++) {
            if ( arr[i].indexOf(separator) !== -1 ) {
              arr2 = arr[i].split(separator);
              obj[arr2[0]] = arr2[1];
            }
        }
        return obj;
    }

    var x = someName(myString, ":");

    console.log(x);