Édo*_*pez 7 string shell capitalize capitalization fish
我收到以下文字:
Lorem ipsum dolor sat amet,consectetur adipisicing elit。
我想大写,即每个单词的第一个字母大写。
Lorem Ipsum Dolor Sit Amet,Consectetur Adipisicing Elit。
使用 bash,我使用了参数扩展:
function to-lower() { echo "$@" |tr '[:upper:]' '[:lower:]' ; }
function capitalize() {
input="$(to-lower "$@")"
for i in $input; do
cap=$(echo -n "${i:0:1}" | tr "[:lower:]" "[:upper:]")
echo -n "${cap}${i:1} "
done
echo
}
Run Code Online (Sandbox Code Playgroud)
我如何以鱼的方式做到这一点?
Fish 目前没有任何工具可以执行此操作(在发行版中),因此假设您有 GNU sed 您可以执行此操作:
function capitalize
echo $argv | sed 's/[^ _-]*/\u&/g'
end
Run Code Online (Sandbox Code Playgroud)
还有各种其他工具,您也可以使用 python 或从 Fish 调用 bash 来完成此操作,要点是无法提取子字符串或用内置的 Fish 替换字符。
在下一个 Fish 版本中,您将能够使用它string sub -l 1 $i
来提取第一个字符。