1
votes

Je n'arrive pas à mettre en majuscule la première lettre de chaque mot

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 commentaires

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 de i et j . Suggestion deux, les mots devraient probablement être const 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 ;-)


4 Réponses :


0
votes

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

Si vous souhaitez convertir en camelCase (la première lettre est en minuscule), reportez-vous à ceci:

https://catalin.me/javascript-snake-to-camel/


0 commentaires

1
votes

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'));


0 commentaires

0
votes

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));


0 commentaires

1
votes

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;
}

0 commentaires