[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 :
- Écriture en camel :
bonjourMonsieurDurand - É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
- 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
- transformer en kebab
- exploser sur les traits d'union pour récupérer un tableau avec chaque mot
- mettre une majuscule à la première lettre de chaque mot (il existe une fonction native PHP pour faire ça)
- 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-duranddonnera 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_mapapplique une fonction PHP sur chaque élément d'un tableauucfirstest 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.
- Écriture en camel :
bonjourMonsieurDurand - É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.