Utilisez ceci:
var source = "4741:GREEN,CIRHOSIS,ORANGE,Long-term,GREEN,HIS B CHIC,4642:GREEN,CRHOSIS,GREEN,HSysk B CC,4643:GREEN,CRHOSIS,GREEN,HSysk B CC,4644:GREEN,CRHOSIS,GREEN,HSysk B CC,4645:GREEN,CRHOSIS,GREEN,HSysk B CC,4646:GREEN,CRHOSIS,GREEN,HSysk B CC,";
var extractRecordsAsArray = function (source) {
var records = [];
if (source && source.split) { // is string
var re = new RegExp("[0-9]+:[^0-9:]+", "g");
var entries = source.match(re);
for (var i = 0, len = entries.length; i < len; i++) {
var entry = entries[i].split(':');
records.push([entry[0], entry[1].split(',')]);
}
}
return (records);
};
console.log("records: %o", extractRecordsAsArray(source));
Ou si vous préférez une carte pour le stockage:
var extractRecordsAsMap = function (source) {
var records = {};
if (source && source.split) { // is string
var re = new RegExp("[0-9]+:[^0-9:]+", "g");
var entries = source.match(re);
for (var i = 0, len = entries.length; i < len; i++) {
var entry = entries[i].split(':');
records[entry[0]] = entry[1].split(',');
}
}
return (records);
};
console.log("records: %o", extractRecordsAsMap(source));
épreuve des balles non garantie et d'être le plus efficace, mais permettra d'atteindre des performances décentes pour assez grandes chaînes et fonctionne bien.
Vous devez fournir le résultat souhaité pour plus de clarté. –
ressemble à un travail pour Regex trouver le numéro devant un colon et ajouter une nouvelle ligne ou un autre caractère devant le numéro. Une fois que les enregistrements sont séparés, ils doivent être faciles à traiter – Roadie57
Comment voulez-vous le diviser? – Detect