从字符串中提取 replace/delete 个字符的更简单方法
Simpler way to replace/delete characters from string
起初我有这段代码获取一个对象并显示特定的行。我得到的是这条线:
@{ "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
有更好的方法吗?以防万一该字符串上有 more/less 个数字。
您可以尝试使用正则表达式,例如将 nic*
捕获到下一个 "
:
$s='@{ "id": "nic-1867724-4351584-0",=}'
$nic=[regex]::match($s,'(nic-(.)*?)"').Groups[1].value
第一个选项
$s='@{ "id": "nic-1867724-4351584-0",=}'
$s-replace'@|,='|ConvertFrom-Json
第二个选项
$s='@{ "id": "nic-1867724-4351584-0",=}'
$s-replace'",=}'-replace'.+"'
起初我有这段代码获取一个对象并显示特定的行。我得到的是这条线:
@{ "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
有更好的方法吗?以防万一该字符串上有 more/less 个数字。
您可以尝试使用正则表达式,例如将 nic*
捕获到下一个 "
:
$s='@{ "id": "nic-1867724-4351584-0",=}'
$nic=[regex]::match($s,'(nic-(.)*?)"').Groups[1].value
第一个选项
$s='@{ "id": "nic-1867724-4351584-0",=}'
$s-replace'@|,='|ConvertFrom-Json
第二个选项
$s='@{ "id": "nic-1867724-4351584-0",=}'
$s-replace'",=}'-replace'.+"'