Convertfrom-string删除前导零

时间:2018-05-03 20:23:51

标签: powershell text-parsing

我遇到了Convertfrom-String cmdlet的问题

$value = 'something:009' 
$value | ConvertFrom-String -Delimiter ':'

输出:

P1        P2
--        --
something  9

我想要的输出是

P1        P2
--        --
something  009

有人有任何想法吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

我建议完全避免使用ConvertFrom-String - 它会执行您在使用-Delimiter时无法控制的类型转换,正如您所经历的那样,并且它的示例驱动的基于模板的解析很尴尬。

注意:ConvertFrom-String在跨平台PowerShell Core edition中不可用。

在您的简单情况下,请改用ConvertFrom-Csv

$value = 'something:009' 
$value | ConvertFrom-Csv -Delimiter ':' -Header P1, P2

ConvertFrom-Csv将所有值读取为字符串,as-is(使用字符串输入;删除字段值周围的双引号)。

答案 1 :(得分:0)

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