Blog Emmanuel Orchanian

astuce bdd bureautique codage culture débat design énigme français hacking html mathématiques méthodologie santé typographie 

 

 [194 vues] 2022-01-18 Emmanuel Orchanian

NOTE : cet article a été affiché dans sa langue originale.

Objectif

Bonjour ! 👨
Voici le défi de coder deux types d'écritures pour aujourd'hui :

  1. Écriture en camel : bonjourMonsieurDurand
  2. Écriture en pascal : BonjourMonsieurDurand

Je vous ai tendu un piège que la vie vous tendra souvent : je vous ai fait croire qu'il faut d'abord coder le camel, et ensuite le pascal. Pourtant l'inverse est plus simple ! Posez-vous toujours la question quand un certain ordre vous est imposé si inverser quelque éléments n'arrangerait pas les choses ?

L'écriture en Pascal

BonjourMonsieurPascal
  • que des lettres de l'alphabet latin (pas d'accent, de cédilles, de ligatures, de ponctuations ou d'autres caractères spéciaux)
  • que des chiffres arabes
  • en minuscule
  • chaque mot commence par une majuscule

On peux s'aider de la fonction kebab() qui permet de renvoyer un texte avec de l-ecriture-en-kebab

Codage

Je commence par poser les bases de la fonction :


    function pascal($s){
        // code...
    }

Explosion et implosion

explosion et implosion en codaga
Notion d'explosion et d'implosion
  • l'explosion consiste à transformer un texte en tableau. On fracture à partir d'un morceau de texte.
  • l'implosion (que je préfère appeler "collage") c'est l'inverse, on transforme un tableau en texte en tout recollant. On peux paramétrer un petit texte qui fait office de "join" ou de "glue" entre chaque morceau recollé.

Ma procédure

  1. transformer en kebab
  2. exploser sur les traits d'union pour récupérer un tableau avec chaque mot
  3. mettre une majuscule à la première lettre de chaque mot (il existe une fonction native PHP pour faire ça)
  4. faire une implosion pour recoller tout le mots

Explosion sur le kébab

(je vais me faire référencer par les services spéciaux avec des titres bizarres comme ça)

$a = explode('-', kebab($s)) ; 

En français : dollar a deviens égal à l'explosion sur les traits d'union de l'écriture en kebab de mon texte de départ.

  • $s désigne le texte car "string" désigne en anglais un texte
  • $a désigne un tableau car "array" désigne en anglais un tableau
  • "exploser sur les traits d'union" signifie que le trait d'union est le "maillon faible", par exemple bonjour-monsieur-durand donnera le tableau [ "bonjour" , "monsieur" , 'durand'], remarquons que les traits d'union ont disparus.

Mise en majuscule de la première lettre de chaque texte d'un tableau

$a = array_map('ucfirst',$a);

En français : dollar a deviens égal à la mise en majuscule de la première lettre de chacun de ses mots

  • array_map applique une fonction PHP sur chaque élément d'un tableau
  • ucfirst est justement le nom de cette fonction PHP que j'utilise : elle permet de mettre en majuscule la première lettre d'un mot."uc" signifie majuscule, c'est l'abréviation anglaise de "upper case" (haut de casse).

On recolle les morceaux

return implode('',$a);

En français : retourne comme résultat le collage du tableau en texte.

Quand on fait un collage (ou implosion) avec un texte vide, cela colle complètement le texte.

Code complet de l'écriture en Pascal


    function pascal($s){
        $a = explode('-', kebab($s)) ;
        $a = array_map('ucfirst',$a);
        return implode('',$a);
    }

Écriture en camel

Si vous avez remarqué, l'écriture en camel c'est comme le pascal mais la tout première lettre est en minuscule.

  1. Écriture en camel : bonjourMonsieurDurand
  2. Écriture en pascal : BonjourMonsieurDurand

function camel($s){
    return lcfirst(pascal($s)) ;
}

Je ne recrée par la roue, je demande simplement à ce qu'il écrive en pascal, puis je met la première lettre en minuscule.

Ainsi je conseille généralement d'écrire votre code comme vous l'expliqueriez en français, ça simplifie souvent les choses...

La fonction lcfirst permet de mettre en minuscule la première lettre d'un texte, c'est l'inverse de ucfirst.

Par ailleurs, "lc" signifie minuscule, c'est l'abréviation anglaise de "lower case" (bas de casse).

  • "uc" signifie MAJUSCULE
  • "lc" signifie minuscule

Voici, c'était la fin des défi codes histoire de fêter mon dixième article, j'espère que vous avez apprécié, pour moi c'était très long à rédiger, j'espère de tout cœur que les articles de mon blog seront lu et apprécié au moins par une personne...

Bonne continuation ! 😊

Merci d'avoir lu !
Si en général vous avez une question, une curiosité, n'hésitez pas me contacter.