Convertfrom-string 删除前导零
Convertfrom-string removes leading zeros
我在使用 Convertfrom-String cmdlet 时遇到问题
$value = 'something:009'
$value | ConvertFrom-String -Delimiter ':'
输出:
P1 P2
-- --
something 9
我想要的输出是
P1 P2
-- --
something 009
有人有什么想法吗?
提前致谢。
我建议完全避免 ConvertFrom-String
- 它会执行您在使用 -Delimiter
时无法控制的类型转换,正如您所经历的那样,并且其示例驱动的基于模板的解析很尴尬。
附带说明:ConvertFrom-String
在跨平台 PowerShell Core edition 中不可用。
在您的简单情况下,请改用 ConvertFrom-Csv
:
$value = 'something:009'
$value | ConvertFrom-Csv -Delimiter ':' -Header P1, P2
ConvertFrom-Csv
将所有值按原样读取为字符串(使用字符串输入;字段值周围的双引号被删除)。
mklement0 提出最佳方案。你也可以这样做:
解决方案 1:使用简单拆分(不是你也可以使用正则表达式拆分)
$value = 'something:009'
$values=$value -split ':'
[pscustomobject]@{
Val1=$values[0]
Val2=$values[1]
}
解决方案 2:使用 ConvertFrom-String 和模板
$template=@"
{{Val1:Abc123}:{Val2:1}}
"@
$value = 'something:009'
$value | ConvertFrom-String -TemplateContent $template
我在使用 Convertfrom-String cmdlet 时遇到问题
$value = 'something:009'
$value | ConvertFrom-String -Delimiter ':'
输出:
P1 P2
-- --
something 9
我想要的输出是
P1 P2
-- --
something 009
有人有什么想法吗?
提前致谢。
我建议完全避免 ConvertFrom-String
- 它会执行您在使用 -Delimiter
时无法控制的类型转换,正如您所经历的那样,并且其示例驱动的基于模板的解析很尴尬。
附带说明:ConvertFrom-String
在跨平台 PowerShell Core edition 中不可用。
在您的简单情况下,请改用 ConvertFrom-Csv
:
$value = 'something:009'
$value | ConvertFrom-Csv -Delimiter ':' -Header P1, P2
ConvertFrom-Csv
将所有值按原样读取为字符串(使用字符串输入;字段值周围的双引号被删除)。
mklement0 提出最佳方案。你也可以这样做:
解决方案 1:使用简单拆分(不是你也可以使用正则表达式拆分)
$value = 'something:009'
$values=$value -split ':'
[pscustomobject]@{
Val1=$values[0]
Val2=$values[1]
}
解决方案 2:使用 ConvertFrom-String 和模板
$template=@"
{{Val1:Abc123}:{Val2:1}}
"@
$value = 'something:009'
$value | ConvertFrom-String -TemplateContent $template