Ecrire une fonction snakeToCamel (str)
qui prend une chaîne snake_cased et retourne
la chaîne CamelCased. snake_case est une chaîne où chaque mot est séparé par
traits de soulignement (_). CamelCase est une chaîne où le premier caractère de chaque mot
est en majuscule, tous les autres caractères en minuscules.
Exemples:
snakeToCamel('snakes_go_hiss'); // => 'SnakesGoHiss' snakeToCamel('say_hello_world'); // => 'SayHelloWorld' snakeToCamel('bootcamp_prep_is_cool'); // => 'BootcampPrepIsCool' snakeToCamel('BOOtcamp_PREP_iS_cOol'); // => 'BootcampPrepIsCool' function snakeToCamel(str) { var newString = ''; var words = str.split('_'); for (i = 0; i < words.length; i++) { for (j = 0; j < words.length; j++) { if (j === 0) { newString += words[i][j].toUpperCase(); } else { newString += words[i][j].toLowerCase(); } } } return newString; }
4 Réponses :
Si vous souhaitez convertir en PascalCase (la première lettre est en majuscule), reportez-vous à ceci:
Méthode Javascript pour changer snake_case en PascalCase p>
Si vous souhaitez convertir en camelCase (la première lettre est en minuscule), reportez-vous à ceci:
Je pense que vous devez avoir votre deuxième boucle itérer sur la longueur du mot et non sur la longueur du tableau de mots.
function snakeToCamel(str) { var newString = ''; var words = str.split('_'); for (i = 0; i < words.length; i++) { for (j = 0; j < words[i].length; j++) { // <--- the ith word's length if (j === 0) { newString += words[i][j].toUpperCase(); } else { newString += words[i][j].toLowerCase(); } } } return newString; } console.log(snakeToCamel('snakes_go_hiss')); console.log(snakeToCamel('say_hello_world')); console.log(snakeToCamel('bootcamp_prep_is_cool')); console.log(snakeToCamel('BOOtcamp_PREP_iS_cOol'));
Comme solution alternative.
Définissez une fonction qui convertit un mot en première lettre majuscule et le reste en minuscules (je l'ai appelé title car c'est ce que l'on appelle dans python ). Ensuite, divisez la chaîne, mappez les mots et rejoignez-la.
SnakesGoHiss SayHelloWorld BootcampPrepIsCool BootcampPrepIsCool
Sortie:
function title(s){ if(s.length == 0) return s; return s[0].toUpperCase() + s.substring(1).toLowerCase(); } function snakeToCamel(str) { return str.split('_').map(title).join(''); } [ 'snakes_go_hiss', 'say_hello_world', 'bootcamp_prep_is_cool', 'BOOtcamp_PREP_iS_cOol' ].map(snakeToCamel).forEach(x => console.log(x));
Fonction de conversion de snake_cased en camelCased
Utilisez la fonction de carte pour convertir la première lettre de chaque mot en majuscule, puis joignez chaque mot
function snakeToCamel(str){ newString="" var words=str.split(_) var uppercasedWords=words.map(word=>{ return word.charAt(0).toUpperCase+word.slice(1); }) for(i=0;i<=uppercasedWords.length;i++){ newString+=uppercasedWords[i] } return newString; }
Est-ce que cela répond à votre question? Méthode Javascript pour changer snake_case en PascalCase
ressemble à des devoirs, mais le code semble raisonnable.
Je suis d'accord avec @Loopo en ce sens que cela ressemble à des devoirs, et je pense que ce serait bien si @aperri où poser une question spécifique quant à savoir où ils ont des problèmes ou sont bloqués ... Suggestion un, le < code> for (i = 0; i et une autre boucle devrait probablement être
for (let i = 0; i < words.length; i ++) {...}
, pour éviter d'attribuer une portée globale dei
etj
. Suggestion deux, lesmots
devraient probablement êtreconst
non attribués àvar
.Encore une chose @aperri, je pense que vous voudrez peut-être regarder comment convertir une chaîne en un tableau de caractères , il y a de plusieurs façons, mais le lié à un sera probablement le plus concis pour corriger l'une de vos boucles ;-)