将字符串转换为int会导致值更改

时间:2015-05-18 21:32:52

标签: windows powershell windows-8.1

我正在尝试读取文本文件并更改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?

1 个答案:

答案 0 :(得分:5)

这种情况正在发生,因为$data[-2][String],使用括号来获取[String]中的字符不会返回新的[String],它会返回{ {1}}。

[Char]显示为单个字符(如字符串中),但实际上是一个数值。当您将其投射到[Char]时,您会看到角色的值,例如[int]的64。

您可以先转换为@,然后转换为[String]以获取单个字符的数字版本,或使用[int]

[int]::Parse()