2010-10-25 7 views
3

Je veux une chaîne séparée à chaque caractère et placée dans un tableau. La chaîne est:Comment fractionner une chaîne à certains numéros de caractères en javascript?

var string = "hello"; 

Voulez-vous utiliser le .split()? Si c'est le cas, comment?

+0

Voulez-vous dire vraiment « certains nombres de caractères » comme indiqué dans le titre, ou à « chaque caractère », comme dans le corps la question? – jball

+0

Je pensais qu'ils seraient liés. Parce que je pensais que ce serait tous les 1 caractères dans ce cas, mais dans d'autres cas ce serait peut-être tous les trois caractères. J'allais pour une question plus large que je pensais être liée. – chromedude

+1

La solution au "certain nombre" donne une solution à "tout seul", mais l'inverse n'est pas nécessairement vrai. Par exemple, la réponse de @ Harmen ci-dessous serait un étrange point de départ pour diviser une chaîne en morceaux de 3 caractères. – jball

Répondre

8

Oui, vous pouvez utiliser:

var str = "hello"; 

// returns ["h", "e", "l", "l", "o"] 
var arr = str.split(''); 
+0

ok, merci (je vais vous marquer comme la réponse une fois que je suis autorisé [après 15 minutes]) – chromedude

1
var s= "hello"; 
s.split(""); 
5

Si vous voulez vraiment faire comme décrit dans le titre, cela devrait fonctionner:

function splitStringAtInterval (string, interval) { 
var result = []; 
for (var i=0; i<string.length; i+=interval) 
    result.push(string.substring (i, i+interval)); 
return result; 
} 
+0

merci, même si ce n'était pas ma question réelle, je cherchais cette réponse pour référence future. – chromedude

9

Je recherchais un problème similaire .. pour briser tous les autres caractères. Après avoir lu sur regex, je suis venu avec ceci:

data = "0102034455dola"; 
arr = data.match(/../g); 

Le résultat est le tableau: ["01","02","03","44","55","do","la"]

0

Voici une façon simple le faire avec une boucle while;

function splitStringAtInterval(str, len){ 
var len = 10; 
var arr = []; 
str = str.split(""); 
while(str.length > len){ 
    arr.push(str.splice(position,len).join("")); 
} 
if(str.length > 0)arr.push(str.join("")); 
    return arr; 
} 
0

Si vous voulez court et « fonctionnelle »:

var input = 'abcdefghijklmn1234567890'; 
var arr = Array.prototype.slice.call(input), output = []; 
while (arr.length) output.push(arr.splice(0, 3).join('')); 

output; // ["abc", "def", "ghi", "jkl", "mn1", "234", "567", "890"] 
Questions connexes