Ich stieß auf einen Fall, in dem ich String
pro Wort teilen muss, das in Kamelfall ist. Ich bin der Umsetzung des geteilten Prozess ähnlich dem answer this question dieses Muster verwenden:Geteilte Wörter auf gewünschte Regionen
split(/(?=[A-Z])/)
Alles ist gut, bis ich diesen Test Set begegnet:
- SalaryGrade - Gehalt Grade
- Parentchild - Eltern-Kind
- Wartung - Wartung
- RemittanceSPD - Überweisungs-SPD
- FBIAgent - FBI-Agent
- FBIAgentNYDepartment - FBI-Agent NY Abteilung
One bis zu drei Werke in Ordnung, aber vier Minuten vor sechs sollten "Remittance SPD", "FBI-Agent", "FBI-Agent NY Department" sein bzw. .
Wie kann ich die Regionen so auswählen, dass aufeinanderfolgende Großbuchstaben als ein Wort und die letzte Sequenz als Anfang des nächsten Wortes behandelt wird? Ich bin nicht so begeistert von One-Liner Regex, um ehrlich zu sein, und ich verliere alle Hoffnung. Ich plane hier eine Brute-Force-Schleife, wenn nicht nur über diese Leistung.
EDIT: Ich möchte, dass Wörter mit nicht nachfolgenden Großbuchstaben und solche mit nachfolgenden Großbuchstaben mit dieser Funktion zufrieden sind, im Gegensatz zu den anderen Fragen über das Teilen von Strings hier auf dieser Website.
Zu schlecht JS unterstützt Lookbehind nicht, oder '/ (? <= [Az]) (? = [AZ]) /' wäre genug gewesen – Aaron
Probieren Sie 'str.match (/ [AZ] + (? ! [az]) | [AZ] [az] */g) ' –
@Aaron Ich habe gerade auch den Look-Behind getestet, vor ein paar Minuten, und ja, schade. Deshalb denke ich daran, es zu wiederholen. – Gideon