我正在尝试读取文本文件并更改Windows 8.1中Powershell中某行上的数字值。该文件有点可预测。
我目前没有发现这是最好的方法,但我试图找出这个错误发生的原因。我想在某个位置找到一个数字然后读取它的整数值。
然而,当我这样做时,我得到了错误的价值。
我的代码:
$data = Get-Content "AssemblyInfo.cs"
Write-Output $data[-2]
Write-Output $data[-2][30]
Write-Output ([int]$data[-2][30])
当前输出:
[assembly: AssemblyVersion("1.2.*")]
2
50
预期产出:
[assembly: AssemblyVersion("1.2.*")]
2
2
为什么在作为int转换时,值会从2变为50?
答案 0 :(得分:5)
这种情况正在发生,因为$data[-2]
是[String]
,使用括号来获取[String]
中的字符不会返回新的[String]
,它会返回{ {1}}。
[Char]
显示为单个字符(如字符串中),但实际上是一个数值。当您将其投射到[Char]
时,您会看到角色的值,例如[int]
的64。
您可以先转换为@
,然后转换为[String]
以获取单个字符的数字版本,或使用[int]
:
[int]::Parse()