我需要转换这样的东西
androidx.arch.core.executor.AppToolkitTaskExecutor
Run Code Online (Sandbox Code Playgroud)
对此
Androidx.Arch.Core.Executor.AppToolkitTaskExecutor
Run Code Online (Sandbox Code Playgroud)
我知道这sed可能对我有帮助,但我不够熟练,无法构建正确的命令。
纯 Bash 解决方案:
#!/usr/bin/env bash
class=androidx.arch.core.executor.AppToolkitTaskExecutor
IFS=.
# Split Fully Qualified class path elements into array using dot delimiter
read -r -a class_array <<<"$class"
# Join the class_array's capitalized class path elements using the dot delimiter
printf -v title_class '%s' "${class_array[*]^}"
# Printout the original Fully Qualified Class Name
# and its matching Title Case Class Name
printf 'FQCN: %s\nTCCN: %s\n' "$class" "$title_class"
Run Code Online (Sandbox Code Playgroud)
输出:
FQCN: androidx.arch.core.executor.AppToolkitTaskExecutor
TCCN: Androidx.Arch.Core.Executor.AppToolkitTaskExecutor
Run Code Online (Sandbox Code Playgroud)
具有功能的替代方法:
#!/usr/bin/env bash
class2Title () {
IFS=.
set -- $@
echo "${*^}"
}
class2Title net.example.bar.Foo
Run Code Online (Sandbox Code Playgroud)
输出:
Net.Example.Bar.Foo
Run Code Online (Sandbox Code Playgroud)