Puisque vous utilisez bash
, si vous avez stocké votre chaîne dans une variable, vous pouvez également le faire uniquement en shell:
uscore="this_is_the_string_to_be_converted"
arr=(${uscore//_/ })
printf %s "${arr[@]^}"
ThisIsTheStringToBeConverted
${uscore//_/ }
remplace tout _
par un espace, (....)
divise la chaîne en un tableau, ${arr[@]^}
convertit la première lettre de chaque élément en majuscule, puis printf %s ..
imprime tous les éléments les uns après les autres.
Vous pouvez stocker la chaîne en chameau dans une autre variable:
printf -v ccase %s "${arr[@]^}"
et l'utiliser / réutiliser plus tard, par exemple:
printf %s\\n $ccase
ThisIsTheStringToBeConverted
Ou, avec zsh
:
uscore="this_is_the_string_to_be_converted"
arr=(${(s:_:)uscore})
printf %s "${(C)arr}"
ThisIsTheStringToBeConverted
(${(s:_:)uscore})
divise la chaîne _
en un tableau, met en (C)
majuscule la première lettre de chaque élément et printf %s ...
imprime tous les éléments les uns après les autres.
Pour la stocker dans une autre variable, vous pouvez utiliser (j::)
pour joindre les éléments:
ccase=${(j::)${(C)arr}}
et l'utiliser / réutiliser plus tard:
printf %s\\n $ccase
ThisIsTheStringToBeConverted
\U\2
insère le texte trouvé du deuxième groupe, converti en TOUTES MAJUSCULES. Comparer à\u\2
, qui insère le texte en cas de phrase, avec uniquement le premier caractère en majuscule. (2) Tous les exemples ci-dessous traduiront «this_is_a_string» en «ThisIsAString» - c'est ce que vous avez demandé, mais il est légèrement difficile à lire. Vous voudrez peut-être réviser vos exigences pour le cas spécial d'un mot à une lettre (sous-chaîne). … (Suite)