如何在 KornShell 中將單字大寫(即第一個字母到大寫)

如何在 KornShell 中將單字大寫(即第一個字母到大寫)

KornShell 中是否有內建方法將單字大寫,例如korn-> Korn?一個 Bash 4 範例來說明:

str='korn'
echo "${str^}"

如果 KornShell 中沒有內建方法來執行此操作,那麼編寫執行此操作的函數的最簡潔、最有效的方法是什麼?

答案1

這是純 ksh (ksh93) 方式:

function cap {
    typeset -u f
    f=${1:0:1}
    printf "%s%s\n" "$f" "${1:1}"
}

$ cap korn
Korn

答案2

如果您沒有可用的 ksh93,您可以在標準 ksh 中執行此操作,如下所示:

function capitalize { 
  typeset -u first
  first=${1%"${1#?}"}
  print "${first}${1#?}"

}

${1#?}刪除所有符合“?”的字符從第一個參數開始。即刪除第一個字符

${var%pattern}pattern從 的末端剝離var。如果我們使用原始單字減去第一個字母作為模式 ( ${1#?}),我們會得到第一個字母。

typeset -u 將第一個字母變成大寫

$ capitalize "the funky chicken"
The funky chicken

警告,這實際上並不總是有效,因為在單字的第一個字母後面可能有特殊的正則表達式字符,並且它們將被解釋為這樣${var%pattern}。例如

$ capitalize a*
A**

答案3

% str='korn'
% echo ${(U)str:0:1}${str#?} 
Korn

相關內容