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}
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 !
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 avantages. 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 :
Vous voulez apprendre à créer shadcn-ui/ui à partir de zéro ? Découvrez construire à partir de zéro
Site Web : https://ramunarasinga.com/
Linkedin : https://www.linkedin.com/in/ramu-narasinga-189361128/
Github : https://github.com/Ramu-Narasinga
E-mail : [email protected]
Créer shadcn-ui/ui à partir de zéro
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3