Avec regex (je suppose) ou une autre méthode, comment puis-je convertir des choses comme:
marker-image
ou my-example-setting
à markerImage
ou myExampleSetting
.
Je pensais simplement diviser en -
convertissant l'indice de cet hypen +1 en majuscules. Mais cela semble assez sale et espérait de l'aide avec les regex qui pourraient rendre le code plus propre.
Pas de jQuery ...
javascript
regex
camelcasing
Oscar Godson
la source
la source
Réponses:
Essaye ça:
L'expression régulière correspondra au
-i
inmarker-image
et ne capturera que lei
. Ceci est ensuite mis en majuscule dans la fonction de rappel et remplacé.la source
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
drapeau. Sans cela, votre modèle manque "Capitalized-Parts" (ne sera pas changé en "capitalizedParts"). De plus, je préfère personnellement la lisibilité améliorée de plusieurs paramètres, mais c'est évidemment une question de style. Dans l'ensemble, j'irais avec.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(); });
:?C'est l'un des grands utilitaires que Lodash propose si vous êtes éclairé et que vous l'avez inclus dans votre projet.
la source
Vous pouvez obtenir l'hypen et le caractère suivant et le remplacer par la version en majuscules du caractère:
la source
Voici ma version de la fonction camelCase:
Il gère tous les cas de bord suivants:
Voici un lien vers les tests en direct: http://jsfiddle.net/avKzf/2/
Voici les résultats des tests:
Notez que les chaînes commençant par des délimiteurs se traduiront par une lettre majuscule au début. Si ce n'est pas ce à quoi vous vous attendez, vous pouvez toujours utiliser lcfirst. Voici mon premier si vous en avez besoin:
la source
Cela ne me crie
RegExp
pas. Personnellement, j'essaie d'éviter les expressions régulières lorsque de simples méthodes de chaîne et de tableau suffiront:la source
Voici une autre option qui combine quelques réponses ici et en fait une méthode sur une chaîne:
Utilisé comme ceci:
la source
la source
Vous pouvez utiliser camelcase de NPM.
npm install --save camelcase
la source
Une autre prise.
la source
est également possible d'utiliser indexOf avec récursivité pour cette tâche.
comparaison ::: mesure le temps d'exécution de deux scripts différents:
code:
la source
Juste une version avec drapeau, boucle for et sans Regex:
la source
Voici ma mise en œuvre (juste pour se salir les mains)
la source
Utilisez ceci si vous autorisez les nombres dans votre chaîne.
Évidemment, les parties commençant par un nombre ne seront pas capitalisées, mais cela peut être utile dans certaines situations.
la source