Maison  >  Article  >  interface Web  >  Convertissez une chaîne en camelCase en utilisant cette fonction en Javascript.

Convertissez une chaîne en camelCase en utilisant cette fonction en Javascript.

PHPz
PHPzoriginal
2024-08-01 08:07:23577parcourir

Avez-vous déjà eu besoin de convertir une chaîne en camelCase ? J'ai trouvé un extrait de code intéressant en explorant le référentiel open source Supabase. Voici la méthode qu’ils utilisent :

function featureToCamelCase(feature: Feature) {
  return feature
    .replace(/:/g, '\_')
    .split('\_')
    .map((word, index) => (index === 0 ? word : word\[0\].toUpperCase() + word.slice(1)))
    .join('') as FeatureToCamelCase<typeof feature>
}

Cette fonction est plutôt intéressante. Il remplace les deux-points par des traits de soulignement, divise la chaîne en mots, puis mappe chaque mot pour le convertir en camelCase. Le premier mot est conservé en minuscules et les mots suivants ont leur premier caractère en majuscule avant d'être réunis. Simple mais efficace !

Convert a string to camelCase using this function in Javascript.

Je suis tombé sur une autre approche sur Stack Overflow qui n'utilise pas d'expressions régulières. Voici l’alternative :

function toCamelCase(str) {
  return str.split(' ').map(function(word, index) {
    // If it is the first word make sure to lowercase all the chars.
    if (index == 0) {
      return word.toLowerCase();
    }
    // If it is not the first word only upper case the first char and lowercase the rest.
    return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
  }).join('');
}

Cet extrait de code de SO contient des commentaires expliquant ce que fait ce code, sauf qu'il n'utilise aucune sorte d'expression régulière. Le code trouvé dans la manière de Supabase de convertir une chaîne en camelCase est très similaire à cette réponse SO, à l'exception des commentaires et de l'expression régulière utilisée.

.replace(/:/g, '\_')

Cette méthode divise la chaîne par espaces, puis mappe sur chaque mot. Le premier mot est entièrement en minuscules, tandis que les mots suivants sont en majuscule au premier caractère et en minuscules pour le reste. Enfin, les mots sont réunis pour former une chaîne camelCase.

Un commentaire intéressant d'un utilisateur de Stack Overflow a mentionné l'avantage en termes de performances de cette approche :

«+1 pour ne pas utiliser d'expressions régulières, même si la question demandait une solution les utilisant. Il s'agit d'une solution beaucoup plus claire, et également d'un gain évident en termes de performances (car le traitement d'expressions régulières complexes est une tâche beaucoup plus difficile que de simplement parcourir un tas de chaînes et d'en joindre des morceaux). Voir jsperf.com/camel-casing-regexp-or-character-manipulation/1 où j'ai pris quelques exemples ici avec celui-ci (et aussi mon propre modeste amélioration des performances, même si je préférerais probablement cette version pour des raisons de clarté dans la plupart des cas). »

Les deux méthodes ont leurs mérites. L'approche regex dans le code Supabase est concise et exploite de puissantes techniques de manipulation de chaînes. D'un autre côté, l'approche non-regex est louée pour sa clarté et ses performances, car elle évite la surcharge de calcul associée aux expressions régulières.

Voici comment choisir entre eux :

  • Utilisez l'approche regex si vous avez besoin d'une solution compacte et unique qui exploite les puissantes capacités regex de JavaScript. Assurez-vous également d'ajouter des commentaires expliquant ce que fait votre regex, afin que votre futur moi ou votre prochain développeur travaillant avec votre code puisse comprendre.
  • Optez pour la méthode sans regex si vous privilégiez la lisibilité et les performances, en particulier lorsque vous traitez des chaînes plus longues ou exécutez cette conversion plusieurs fois.

Vous voulez apprendre à créer shadcn-ui/ui à partir de zéro ? Découvrez construire à partir de zéro

Sur moi:

Site Internet : https://ramunarasinga.com/

Linkedin : https://www.linkedin.com/in/ramu-narasinga-189361128/

Github : https://github.com/Ramu-Narasinga

Email : ramu.narasinga@gmail.com

Construisez shadcn-ui/ui à partir de zéro

Références :

  1. https://github.com/supabase/supabase/blob/master/apps/studio/hooks/misc/useIsFeatureEnabled.ts#L16
  2. https://stackoverflow.com/a/35976812

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn