Ich habe versucht, einen JavaScript-Regex-Befehl zu erhalten, um so etwas "thisString"
in etwas umzuwandeln, "This String"
aber das nächste, was ich bekommen habe, ist das Ersetzen eines Buchstabens, was zu etwas wie "Thi String"
oder führt "This tring"
. Irgendwelche Ideen?
Um zu klären , ich die Einfachheit der Kapitalisierung einen Brief umgehen kann, bin ich einfach nicht so stark mit RegEx und Spaltung "somethingLikeThis"
in "something Like This"
ist , wo ich Probleme habe.
javascript
regex
Ein Zauberer hat es geschafft
quelle
quelle
Antworten:
Anzeigen
Code-Snippet anzeigen
quelle
str.replace(/((?<!^)[A-Z](?![A-Z]))(?=\S)/g, ' $1').replace(/^./, s => s.toUpperCase() );
Es wird konvertiertuserID
inUser ID
und es wird sogar konvertiertuserIDField
inUser ID Field
Ich hatte ein müßiges Interesse daran, insbesondere an der Behandlung von Großbuchstabenfolgen, wie z. B. an xmlHTTPRequest. Die aufgelisteten Funktionen würden "Xml HTTP Request" oder "Xml HTTPRequest" erzeugen, meine "Xml HTTP Request".
Es gibt auch eine String.prototype-Version in einem Kern .
quelle
str.replace(/((?<!^)[A-Z](?![A-Z]))(?=\S)/g, ' $1').replace(/^./, s => s.toUpperCase() )
Dies kann mit Regex Lookahead ( Live-Demo ) präzise erfolgen :
(Ich dachte, dass die
g
(globale) Flagge notwendig ist, aber seltsamerweise ist dies in diesem speziellen Fall nicht der Fall.)Durch die Verwendung von Lookahead mit wird
split
sichergestellt, dass der übereinstimmende Großbuchstabe nicht verbraucht wird, und es wird vermieden, mit einem führenden Leerzeichen umzugehen, wenn Sie sich mit UpperCamelCase befassen müssen. Um den ersten Buchstaben eines jeden zu groß zu schreiben, können Sie Folgendes verwenden:Die
map
Array-Methode ist eine ES5-Funktion, Sie können sie jedoch in älteren Browsern mit etwas Code aus MDC verwenden . Alternativ können Sie die Array-Elemente mithilfe einerfor
Schleife durchlaufen .quelle
Ich denke, dies sollte in der Lage sein, aufeinanderfolgende Großbuchstaben sowie einfache camelCase zu verarbeiten.
Zum Beispiel: someVariable => someVariable, aber ABCCode! = ABC Code.
Der folgende reguläre Ausdruck funktioniert in Ihrem Beispiel, aber auch im allgemeinen Beispiel für die Darstellung von Abkürzungen in camcelCase.
Sie können auch wie oben anpassen, um das erste Zeichen groß zu schreiben.
quelle
Spacecamel ('etwas wie dieses')
// zurückgegebener Wert: so etwas
quelle
Lodash handhabt dies gut mit
_.startCase()
quelle
Eine Lösung, die auch mit Zahlen umgeht:
Hier getestet [JSFiddle, keine Bibliothek. Nicht versucht IE]; sollte ziemlich stabil sein.
quelle
Wenn Sie sich nicht für ältere Browser interessieren (oder nichts dagegen haben, eine Fallback- Reduktionsfunktion für sie zu verwenden), kann dies sogar Zeichenfolgen wie 'xmlHTTPRequest' aufteilen (aber sicherlich können solche wie 'XMLHTTPRequest' dies nicht).
quelle
Meine Version
quelle
Probieren Sie diese Lösung hier aus -
quelle
Nicht Regex, aber nützlich, um einfache und alte Techniken wie diese zu kennen:
quelle