Davvero, praticamente quello che dice il titolo.Limitare le volte che .split() si divide, piuttosto che troncare l'array risultante
Diciamo che avete questa stringa:
var theString = "a=b=c=d";
Ora, quando si esegue theString.split("=")
il risultato è ["a", "b", "c", "d"]
come previsto. E, naturalmente, quando si esegue theString.split("=", 2)
si ottiene ["a", "b"]
, che dopo aver letto the MDN page for String#split()
ha senso per me.
Tuttavia, il comportamento che sto cercando è più simile a Java di String#split()
: Invece di costruire la matrice normalmente, per poi tornare i primi n elementi, si costruisce una serie di primo n-1 partite, poi aggiunge tutti i caratteri rimanenti come ultimo elemento dell'array. Vedere the relevant docs per una descrizione migliore.
Come posso ottenere questo effetto in Javascript?
Sto cercando la risposta con la migliore prestazione che funzioni come l'implementazione Java, anche se il modo in cui funziona può essere diverso.
Pubblicheremo il mio tentativo, ma non so come andare a scrivere questo a tutti.
Potresti aggiungere una rapida spiegazione di come funziona? –
@QPaysTaxes I iterate "limite" numero di volte e su ogni iterazione uso una espressione regolare per trovare la successiva occorrenza del carattere di suddivisione. La regex ricorda dove si trovava l'ultima partita e, una volta eseguita, so dove si trova la prossima partita. Aggiungo la sezione di stringa tra queste due posizioni su ogni iterazione. Fuori dal ciclo, aggiungo la sezione della stringa tra l'ultima corrispondenza regolare e la fine della stringa. –
E poiché l'OP ha chiesto informazioni sulle prestazioni, questa implementazione è circa il doppio più veloce (in Chrome) degli altri due. Mi ha sorpreso! –