2011-12-02 22 views
28

ho una stringa che devo diviso in stringhe più piccole con una lunghezza uguale di 6. Ho provato ad utilizzare:stringa Split in array di stringhe di lunghezza pari

'abcdefghijklmnopqrstuvwxyz'.split(/(.{6})/) 

ma restituisce un array con stringhe vuote come così :

["", "abcdef", "", "ghijkl", "", "mnopqr", "", "stuvwx", ""] 

risposta

53

Usa match in combinazione con un flag globale, invece di scissione. È necessario {1,6} per includere anche l'ultima parte della stringa corrispondente. I pattern sono avidi di default, il che significa che il più è abbinato il più possibile. Quindi, .{1,6} corrisponderà solo a meno di 6 caratteri alla fine di una stringa.

'abcdefghijklmnopqrstuvwxyz'.match(/.{1,6}/g); 

Risultato:

["abcdef", "ghijkl", "mnopqr", "stuvwx", "yz"]; 

Si noti che l'oggetto restituito è un vero array. Per verificare:

console.log('.'.match(/./g) instanceof Array); //true 

+0

funziona come un fascino! Grazie! – trumank

+1

Nota che '.' non * corrisponde * a nessun carattere. [Ignora 'Lineterminator's] (http://es5.github.io/#x15.10.2.8). Usa '[\ s \ S]' per assicurarti che funzioni su stringhe multi-linea. – user123444555621