Wie kann ich mit Regex (nehme ich an) oder einer anderen Methode Dinge konvertieren wie:
marker-image
oder my-example-setting
zu markerImage
oder myExampleSetting
.
Ich habe darüber nachgedacht -
, den Index dieses Hypen +1 nur in Großbuchstaben umzuwandeln. Aber es scheint ziemlich schmutzig zu sein und hoffte auf Hilfe bei Regex, die den Code sauberer machen könnte.
Keine jQuery ...
javascript
regex
camelcasing
Oscar Patensohn
quelle
quelle
Antworten:
Versuche dies:
Der reguläre Ausdruck stimmt mit dem
-i
in übereinmarker-image
und erfasst nur deni
. Dies wird dann in der Rückruffunktion in Großbuchstaben geschrieben und ersetzt.quelle
myString.replace(/([a-z][A-Z])/g, function (g) { return g[0] + '-' + g[1].toLowerCase() });
myString.replace(/-([a-z])/i, function (i) { return i[1].toUpperCase() });
i
Flagge robuster zu machen . Ohne sie fehlen in Ihrem Muster "großgeschriebene Teile" (wird nicht in "großgeschriebene Teile" geändert). Ich persönlich bevorzuge auch die verbesserte Lesbarkeit mehrerer Parameter, aber das ist natürlich eine Frage des Stils. Alles in allem würde ich mitgehen.replace( /-([a-z])/gi, function ( $0, $1 ) { return $1.toUpperCase(); } );
.var camelCased = myString.replace(/(-+|\s+)\w/g, function (g) { return g[1].toUpperCase(); });
var camelCased = myString.replace(/(-+|\s+)\w/g, function (g) { return g[g.length - 1].toUpperCase(); });
?Dies ist eines der großartigen Dienstprogramme, die Lodash bietet, wenn Sie aufgeklärt sind und es in Ihr Projekt aufnehmen.
quelle
Sie können den Hypen und das nächste Zeichen abrufen und durch die Großbuchstabenversion des Zeichens ersetzen:
quelle
Hier ist meine Version der camelCase-Funktion:
Es behandelt alle folgenden Randfälle:
Hier ist ein Link zu Live-Tests: http://jsfiddle.net/avKzf/2/
Hier sind Ergebnisse von Tests:
Beachten Sie, dass Zeichenfolgen, die mit Trennzeichen beginnen, am Anfang einen Großbuchstaben ergeben. Wenn Sie dies nicht erwarten, können Sie immer lcfirst verwenden. Hier ist meine erste, wenn Sie es brauchen:
quelle
Das schreit nicht nach einem
RegExp
für mich. Persönlich versuche ich, reguläre Ausdrücke zu vermeiden, wenn einfache String- und Array-Methoden ausreichen:quelle
Hier ist eine weitere Option, die hier einige Antworten kombiniert und eine Methode für eine Zeichenfolge erstellt:
So verwendet:
quelle
quelle
Sie können Camelcase von NPM verwenden.
npm install --save camelcase
quelle
Noch eine Einstellung.
quelle
Es ist auch möglich, indexOf mit Rekursion für diese Aufgabe zu verwenden.
Vergleich ::: Ausführungszeit für zwei verschiedene Skripte messen:
Code:
quelle
Nur eine Version mit Flag, für Loop und ohne Regex:
quelle
Hier ist meine Implementierung (nur um die Hände schmutzig zu machen)
quelle
Verwenden Sie diese Option, wenn Sie Zahlen in Ihrer Zeichenfolge zulassen .
Natürlich werden die Teile, die mit einer Zahl beginnen, nicht großgeschrieben, aber dies kann in einigen Situationen nützlich sein.
quelle