更简单的方法来替换/删除字符串中的字符

时间:2015-03-19 18:15:40

标签: string object replace powershell-v4.0

起初我有这段代码获取一个对象并显示一个特定的行。我得到的是这一行:

 @{      "id": "nic-1867724-4351584-0",=}

现在我使用了-replace,我能够得到我原本想要的部分:

 nic-1867724-4351584-0

这是给我简洁线条的代码。

 $interfaceID = skytap vm show 4370436
 $interfaceID = Out-String | Select-Object ($stream -like "*nic-[0-9]*")[0]
 $right = $interfaceID -replace "....$"
 $interfaceID = $right -replace "@{.............",""
 Write-Host $interfaceID

有没有更好的方法呢?以防该字符串上有更多/更少的数字。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用正则表达式,例如将nic*捕获到下一个"

$s='@{      "id": "nic-1867724-4351584-0",=}'
$nic=[regex]::match($s,'(nic-(.)*?)"').Groups[1].value

答案 1 :(得分:0)

第一个选项

$s='@{      "id": "nic-1867724-4351584-0",=}'
$s-replace'@|,='|ConvertFrom-Json

第二个选项

$s='@{      "id": "nic-1867724-4351584-0",=}'
$s-replace'",=}'-replace'.+"'