J'ai essayé d'obtenir une commande JavaScript regex pour transformer quelque chose comme "thisString"
en "This String"
mais le plus proche que j'ai obtenu est de remplacer une lettre, ce qui donne quelque chose comme "Thi String"
ou "This tring"
. Des idées?
Pour clarifier, je peux gérer la simplicité de la capitalisation d'une lettre, je ne suis tout simplement pas aussi fort avec RegEx, et la division "somethingLikeThis"
en "something Like This"
est là où j'ai des problèmes.
javascript
regex
Un sorcier l'a fait
la source
la source
Réponses:
affiche
Afficher l'extrait de code
la source
str.replace(/((?<!^)[A-Z](?![A-Z]))(?=\S)/g, ' $1').replace(/^./, s => s.toUpperCase() );
Il se convertirauserID
enUser ID
, et il se convertira mêmeuserIDField
enUser ID Field
J'avais un intérêt vide pour cela, en particulier dans la gestion des séquences de majuscules, comme dans xmlHTTPRequest. Les fonctions listées produiraient "Xml HTTP Request" ou "Xml HTTPRequest", la mienne produirait "Xml HTTP Request".
Il y a aussi une version String.prototype dans un résumé .
la source
str.replace(/((?<!^)[A-Z](?![A-Z]))(?=\S)/g, ' $1').replace(/^./, s => s.toUpperCase() )
Cela peut être fait de manière concise avec regex lookahead ( démo en direct ):
(Je pensais que le
g
drapeau (global) était nécessaire, mais curieusement, ce n'est pas dans ce cas particulier.)L'utilisation de lookahead avec
split
garantit que la lettre majuscule correspondante n'est pas consommée et évite de traiter un espace de début si UpperCamelCase est quelque chose que vous devez traiter. Pour mettre en majuscule la première lettre de chacun, vous pouvez utiliser:La
map
méthode de tableau est une fonctionnalité ES5, mais vous pouvez toujours l'utiliser dans les navigateurs plus anciens avec du code de MDC . Vous pouvez également parcourir les éléments du tableau à l'aide d'unefor
boucle.la source
Je pense que cela devrait être capable de gérer des caractères majuscules consécutifs ainsi que de simples camelCase.
Par exemple: someVariable => someVariable, mais ABCCode! = ABC Code.
L'expression régulière ci-dessous fonctionne sur votre exemple, mais aussi sur l'exemple courant de représentation des abréviations dans camcelCase.
Vous pouvez également ajuster comme ci-dessus pour mettre en majuscule le premier caractère.
la source
spacecamel ('quelque chose comme ça')
// valeur renvoyée: quelque chose comme ça
la source
Lodash gère cela bien avec
_.startCase()
la source
Une solution qui gère également les nombres:
Testé ici [JSFiddle, pas de bibliothèque. Non essayé IE]; devrait être assez stable.
la source
Si vous ne vous souciez pas des navigateurs plus anciens (ou si cela ne vous dérange pas d'utiliser une fonction de réduction de secours pour eux), cela peut même diviser des chaînes comme 'xmlHTTPRequest' (mais certainement les goûts de 'XMLHTTPRequest' ne le peuvent pas).
la source
Ma version
la source
Essayez cette solution ici -
la source
Pas de regex, mais utile pour connaître des techniques simples et anciennes comme celle-ci:
la source