Powershell中的奇怪脚本问题

时间:2017-05-23 12:31:05

标签: arrays string function powershell

我是PowerShell的新手,但不是脚本。

为什么这个脚本:

$usr = "john.doe"
$usrname = $usr -split ".", 0, "simplematch"
$fullname = upperInitial($usrname[0]) + upperInitial($usrname[1])
write-host "Hello $fullname"

function upperInitial($upperInitialString) {
  return $upperInitialString.substring(0, 1).toupper() + $upperInitialString.substring(1).tolower()
}

让我回答你好John'而不是你好John Doe'?

1 个答案:

答案 0 :(得分:4)

它不会将upperInitial函数的第二次调用视为一个函数,它将它视为我认为函数的第一次调用的参数。

其中任何一项工作:

$fullname = "$(upperInitial($usrname[0])) $(upperInitial($usrname[1]))"
write-host "Hello $fullname"

以上使用子表达式运算符$()来执行双引号字符串中的函数。

$fullname = (upperInitial($usrname[0])) + ' ' + (upperInitial($usrname[1]))
write-host "Hello $fullname"

这个结合了你想要的两个函数的结果,虽然我还添加了一个空格字符,因为否则就是JohnDoe。