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