まあ、あなたは自分でそれを行うことも、怠け者で次のコードを使用することもできます:
var string = "1 book at 12.49 1 music CD at 14.99 1 chocolate bar at 0.85";
var data = getArray(string);
console.debug(data);
function getArray(string){
//prepare the string
//adding terminators (";")
string = string.replace(/(at) ([0-9]*).([0-9]*)/g,"$1 $2.$3;");
string = string.replace(/; /g,";"); //remove whitespace after terminators
string = string.substring(0,string.length-1); //remove last terminator
var split = string.split(";"); //split it up
var data = new Array();
//loop through objects
for(var i=0;i<split.length;i++){
data[i] = new Array();
var subData = split[i].split(" ");
data[i]['count'] = subData[0]; //0 is count
data[i]['price'] = subData[subData.length-1]; //last is price
data[i]['article'] = "";
for(var j=1;j<subData.length-2;j++){ //in between is the name (minus the "at")
data[i]['article'] += subData[j] + " ";
}
}
return data //and done
}
jsFiddle: http://jsfiddle.net/3sNBJ/1/
...もっと良い解決策があると思いますが、正規表現もあまり得意ではありません...
[編集] ...ああ、インポートも必要な値です...まあ、http://jsfiddle.net/3sNBJ/3/
[edit2] ...今UIで: http://jsfiddle.net/3sNBJ/5/