這將產生你想要的輸出:
$(document).ready(function() {
var content='Image{BackgroundImage: Image.gif;Position: 0, 0;Width: 320;Height: 480;}Button{BackgroundImage: Button.gif;Position: 49, 80;Width: 216;Height: 71;}Button{BackgroundImage: Button2.gif;Transition: View2;Position: 65, 217;Width: 188;Height: 134;}Label{Position: 106, 91;Width: 96;Height: 34;Text: "Button";FontSize: 32;Color: 0.12549, 0.298039, 0.364706, 1;}';
var result = content.split('}');
result.pop();// removing the last empty element
var obj = {Controls:{}};
$.each(result, function (i, v) {
var key = v.split('{');
var value = v.replace(key[0], '') + '}';
if (key[0] !== 'Button') {
obj.Controls[key[0]] = value;
} else {
if (!obj.Controls.hasOwnProperty('Buttons')) {
obj.Controls['Buttons'] = [];
}
obj.Controls.Buttons.push(value);
}
});
console.log(obj);
});
工作演示:http://jsfiddle.net/fewds/TuNTV/2/
輸出例:
{
"Controls": {
"Image": "{BackgroundImage: Image.gif;Position: 0, 0;Width: 320;Height: 480;}",
"Buttons": [
"{BackgroundImage: Button.gif;Position: 49, 80;Width: 216;Height: 71;}",
"{BackgroundImage: Button2.gif;Transition: View2;Position: 65, 217;Width: 188;Height: 134;}"
],
"Label": "{Position: 106, 91;Width: 96;Height: 34;Text: \"Button\";FontSize: 32;Color: 0.12549, 0.298039, 0.364706, 1;}"
}
}
如果你只是想有多個關鍵事件基準遞增,你可以這樣做:
$(document).ready(function() {
var content='Image{BackgroundImage: Image.gif;Position: 0, 0;Width: 320;Height: 480;}Image{BackgroundImage: Image2.gif;Position: 0, 0;Width: 320;Height: 480;}Button{BackgroundImage: Button.gif;Position: 49, 80;Width: 216;Height: 71;}Button{BackgroundImage: Button2.gif;Transition: View2;Position: 65, 217;Width: 188;Height: 134;}Button{BackgroundImage: Button3.gif;Transition: View2;Position: 65, 217;Width: 188;Height: 134;}Label{Position: 106, 91;Width: 96;Height: 34;Text: "Button";FontSize: 32;Color: 0.12549, 0.298039, 0.364706, 1;}Label{Position: 106, 91;Width: 96;Height: 34;Text: "Button";FontSize: 32;Color: 0.12549, 0.298039, 0.364706, 1;}';
var result = content.split('}');
result.pop();// removing the last empty element
var obj = {Controls:{}};
function nextProp(key) {
if(obj.Controls.hasOwnProperty(key)) {
var num = key.match(/\d+$/);
if (num) {
return nextProp(key.replace(num[0], '') + (parseInt(num[0], 10) + 1));
} else {
return nextProp(key + '1');
}
}
return key;
}
for (var i = 0; i < result.length; i++) {
var key = result[i].split('{');
var value = result[i].replace(key[0], '') + '}';
obj.Controls[nextProp(key[0])] = value;
}
console.log(obj);
});
工作演示:http://jsfiddle.net/fewds/TuNTV/5/
輸出例如:
{
"Controls": {
"Image": "{BackgroundImage: Image.gif;Position: 0, 0;Width: 320;Height: 480;}",
"Image1": "{BackgroundImage: Image2.gif;Position: 0, 0;Width: 320;Height: 480;}",
"Button": "{BackgroundImage: Button.gif;Position: 49, 80;Width: 216;Height: 71;}",
"Button1": "{BackgroundImage: Button2.gif;Transition: View2;Position: 65, 217;Width: 188;Height: 134;}",
"Button2": "{BackgroundImage: Button3.gif;Transition: View2;Position: 65, 217;Width: 188;Height: 134;}",
"Label": "{Position: 106, 91;Width: 96;Height: 34;Text: \"Button\";FontSize: 32;Color: 0.12549, 0.298039, 0.364706, 1;}",
"Label1": "{Position: 106, 91;Width: 96;Height: 34;Text: \"Button\";FontSize: 32;Color: 0.12549, 0.298039, 0.364706, 1;}"
}
}
[你嘗試過什麼?](http://www.whathaveyoutried.com) –
那是哪裏字符串來自哪裏?爲什麼這種格式? – elclanrs
字符串從另一個程序傳遞給我,我需要解析/分解成可以操縱的東西,即目標和修改'高度'或'x'等。我使用Split()函數來獲取此遠,但不知道如何在保留所有數據的同時進一步細分。 – Rob