2012-12-12 51 views
0

如果我有以下字符串:使用JavaScript提取特定的子字符串?

mickey mouse WITH friend:goofy WITH pet:pluto 

什麼是JavaScript來採取串並提取出所有的「鍵:值」的最好辦法對進入某些對象變量?冒號是分隔符。儘管我可能會也可能不會保證WITH會在那裏。

+0

我覺得串缺乏一定的連貫性。你確定以前的第一句話:永遠是關鍵。並且:之後的第一個詞總是價值? –

+0

你可以在空白處使用正則表達式,或者只是['split'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/split)和冒號到子字符串。你有什麼嘗試? – Bergi

+0

@Xeano兩者都有。 – Rolando

回答

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; 
} 
+0

不要忘記檢查'ar === null' – Bergi

+0

感謝@Bergi爲你的catch – closure

0

也許像

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

它會返回數組,然後在陣列上循環。

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

字符串模式必須以一種或另一種方式至少一致。 使用由發生在共同的(我們說空間ATLEAST)字拆分的JavaScript和拆分功能 然後,你需要通過使用每個那些分裂:爲重點,並獲得所需的值對象。 希望這是你渴望什麼。

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

'match'採用正則表達式。使用'indexOf'或省略那一行,你仍然可以檢查'arr2.length' – Bergi

+0

感謝提示,完成 –

相關問題