【发布时间】:2016-04-24 14:17:36
【问题描述】:
我正在尝试替换 Powershell 中的部分字符串。但是,替换字符串不是硬编码的,它是通过函数计算得出的:
$text = "the image is -12345-"
$text = $text -replace "-(\d*)-", 'This is the image: $1'
Write-Host $text
这给了我正确的结果: "这是图像:12345"
现在,我想包含 base64 编码的图像。我可以从 id 读取图像。我希望以下方法能奏效,但它没有:
function Get-Base64($path)
{
[convert]::ToBase64String((get-content $path -encoding byte))
}
$text -replace "-(\d*)-", "This is the image: $(Get-Base64 '$1')"
它不起作用的原因是它首先将$1(字符串,而不是$1 的值)传递给函数,执行它,然后它才进行替换。我想做的是
- 查找模式的出现
- 用模式替换每个出现
- 对于每次替换:
- 将捕获组传递给函数
- 使用捕获组的值获取base64图像
- 将base64图像注入替换
【问题讨论】:
标签: regex powershell