J'ai une valeur de chaîne ( "11112233" code>). Je veux diviser cette chaîne et le séparer à 3 valeur différente.
var myVal = "11112233";
var lastVal = myVal.split(0 , 3); // split from index 0 till index 3
5 Réponses :
Essayez cette expression régulière: \ 1 * code> signifie "identique à la correspondance précédente, zéro ou plusieurs fois". P> P>
Il y a le substr () code>
fonction. < P> Vous pouvez l'utiliser comme si vous avez écrit dans votre question: p>
En fait, la question est assez difficile en disant «une chose comme celle-ci». C'est toujours une réponse valide IMHO.
Essayez comme ça
myVal='11112233' myVal.match(/(\d)\1+/g); //["1111", "22", "33"]
Vous pouvez utiliser l'objet pour résoudre ce problème.
var str = '11112233'; var strObj = {}; for(var i = 0; i < str.length; i++){ if(strObj[str[i]]) { strObj[str[i]]+=str[i]; } else { strObj[str[i]] = str[i]; } } for (var key in strObj) { if (strObj.hasOwnProperty(key)) { alert(key + " -> " + strObj[key]); } }
Il devrait être plus efficace en termes de temps et de complexité spatiale.
Pas sûr: JSPERF.com/regexp-vs-HardCodé , en ce qui concerne JSPERF: -RÉ
Pour compléter les réponses ci-dessus, voici la solution qui n'utilise pas Regex.
function partition(acc, value){ var last = acc[acc.length-1]; if(last && last[0] == value) acc[acc.length-1] += value; else acc = acc.concat(value); return acc; } var toInt = parseInt.bind(null, 10) var x = ([[]]).concat("112233".split('')) .reduce(partition).map(toInt); // [11, 22, 33]
Vous pouvez simplement faire comme ça '11112233'.Split (/ (1+ | 2+ | 3 + +) /). mais besoin d'amélioration des regex