Поскольку вы используете bash
, если вы сохранили свою строку в переменной, вы также можете сделать это только для оболочки:
uscore="this_is_the_string_to_be_converted"
arr=(${uscore//_/ })
printf %s "${arr[@]^}"
ThisIsTheStringToBeConverted
${uscore//_/ }
заменяет все _
пробелом, (....)
разбивает строку на массив, ${arr[@]^}
преобразует первую букву каждого элемента в верхний регистр и затем printf %s ..
печатает все элементы один за другим.
Вы можете сохранить строку в верблюде в другую переменную:
printf -v ccase %s "${arr[@]^}"
и использовать / повторно использовать его позже, например:
printf %s\\n $ccase
ThisIsTheStringToBeConverted
Или с zsh
:
uscore="this_is_the_string_to_be_converted"
arr=(${(s:_:)uscore})
printf %s "${(C)arr}"
ThisIsTheStringToBeConverted
(${(s:_:)uscore})
разбивает строку на _
массив, (C)
использует первую букву каждого элемента и printf %s ...
печатает все элементы один за другим.
Чтобы сохранить ее в другой переменной, вы можете использовать ее (j::)
для объединения элементов:
ccase=${(j::)${(C)arr}}
и использовать / использовать его позже:
printf %s\\n $ccase
ThisIsTheStringToBeConverted
\U\2
вставляет найденный текст из второй группы, преобразованный во ВСЕ КАПСЫ. Сравните с\u\2
, который вставляет текст в случае предложения, только с заглавной буквы. (2) Все приведенные ниже примеры переведут «this_is_a_string» в «ThisIsAString» - это то, что вы просили, но его немного сложно прочитать. Возможно, вы захотите пересмотреть ваши требования для особого случая однобуквенного слова (подстрока). … (Продолжение)