Javascript Split-Zeichenfolge für Großbuchstaben

105

Wie teilt man eine Zeichenfolge in ein Array in Javascript nach UpperCase-Zeichen auf?

Also möchte ich teilen:

'ThisIsTheStringToSplit'

in

('This', 'Is', 'The', 'String', 'To', 'Split')
Nicholas Murray
quelle
Dies könnte für einige Leute nützlich sein, die nach einer Lösung für dieses Problem suchen
Augusto Barreto

Antworten:

220

Ich würde das so machen .match():

'ThisIsTheStringToSplit'.match(/[A-Z][a-z]+/g);

Es wird ein Array wie folgt erstellt:

['This', 'Is', 'The', 'String', 'To', 'Split']

edit: da die string.split()Methode auch Regex unterstützt, kann dies so erreicht werden

'ThisIsTheStringToSplit'.split(/(?=[A-Z])/); // positive lookahead to keep the capital letters

das wird auch das Problem aus dem Kommentar lösen:

"thisIsATrickyOne".split(/(?=[A-Z])/);
Teneff
quelle
47
Dies findet keine einzelnen Großbuchstaben. Ich schlage folgendes vor: "thisIsATrickyOne".match(/([A-Z]?[^A-Z]*)/g).slice(0,-1)
Andrewmu
18
.match(/[A-Z][a-z]+|[0-9]+/g).join(" ")

Dies sollte auch die Zahlen behandeln. Der Join am Ende führt dazu, dass alle Array-Elemente zu einem Satz verkettet werden, wenn Sie danach suchen

'ThisIsTheStringToSplit'.match(/[A-Z][a-z]+|[0-9]+/g).join(" ")

Ausgabe

"This Is The String To Split"
Max
quelle
Dies ist perfekt. Aber jemand dies unter Verwendung sollte im folgenden Fall vorsichtig sein: 'ThisIs8TheSt3ringToSplit'.match(/[A-Z][a-z]+|[0-9]+/g).join(" ")ausgibt This Is 8 The St 3 To Split, ommitting den kleinen Fall string ( ring) nach 3.
Diablo
9

Hier sind Sie ja :)

var arr = UpperCaseArray("ThisIsTheStringToSplit");

function UpperCaseArray(input) {
    var result = input.replace(/([A-Z]+)/g, ",$1").replace(/^,/, "");
    return result.split(",");
}
Manuel van Rijn
quelle