Desde que você está usando bash
, se você armazenou sua string em uma variável, também pode fazê-lo apenas com shell:
uscore="this_is_the_string_to_be_converted"
arr=(${uscore//_/ })
printf %s "${arr[@]^}"
ThisIsTheStringToBeConverted
${uscore//_/ }
substitui tudo _
pelo espaço, (....)
divide a string em uma matriz, ${arr[@]^}
converte a primeira letra de cada elemento em maiúscula e depois printf %s ..
imprime todos os elementos um após o outro.
Você pode armazenar a sequência com camelo em outra variável:
printf -v ccase %s "${arr[@]^}"
e use / reutilize mais tarde, por exemplo:
printf %s\\n $ccase
ThisIsTheStringToBeConverted
Ou, com zsh
:
uscore="this_is_the_string_to_be_converted"
arr=(${(s:_:)uscore})
printf %s "${(C)arr}"
ThisIsTheStringToBeConverted
(${(s:_:)uscore})
divide a string _
em uma matriz,
coloca em (C)
maiúscula a primeira letra de cada elemento e printf %s ...
imprime todos os elementos um após o outro.
Para armazená-lo em outra variável, você pode usar (j::)
para unir os elementos:
ccase=${(j::)${(C)arr}}
e use / reutilize mais tarde:
printf %s\\n $ccase
ThisIsTheStringToBeConverted
\U\2
insere o texto encontrado do segundo grupo, convertido em ALL CAPS. Compare com\u\2
, que insere o texto em maiúsculas e minúsculas, com apenas o primeiro caractere em maiúscula. (2) Todos os exemplos fornecidos abaixo traduzirão “this_is_a_string” para “ThisIsAString” - que é o que você solicitou, mas é um pouco difícil de ler. Você pode revisar seus requisitos para o caso especial de uma palavra de uma letra (substring). ... (continua)