Is this expected behavior from a Powershell for loop
有点背景:我正在写一个简短的方法来将
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | function Get-FileName { param([string] $name) $out = '' $chars = $name.ToCharArray() for ($i = 0; $i -lt $chars.Length; $i++, $c = $chars[$i]) { if ($c -ge 'A' -and $c -le 'Z' -and -not $out.Length -eq 0) { $out += '_' } Write-Host $c $out += $c.ToString().ToLower() } return $out; } Get-FileName"BIOS" |
这给我的错误是:
6
理想情况下,我会选择
但这导致了这一切的发生
1 2 3 4 5 6 7 | You cannot call a method on a null-valued expression. At C:\Users\kylestev\Desktop\test.ps1:145 char:32 + $out += $c.ToString <<<< ().ToLower() B I O b_i_o |
我来自Java和C的背景,所以这不工作是一种失望。有人知道一个解决办法,使这项工作作为一个班轮?我不想在循环体中给
它只是空的,因为你从未声明过它。
1 2 | $c= '' for ($i = 0; $i -lt $chars.Length; $i++,($c = $chars[$i])) { |
就像Java和C语言一样,声明变量和括号仍然适用。