【发布时间】:2017-04-16 14:47:32
【问题描述】:
使用 Powershell 版本 3 并读取文件的内容,然后我需要查看文件中是否包含多个字符串之一,如果存在则替换它们。就我而言,问题是我需要匹配的其中一个字符串中可能包含可变数量的空格(或根本没有空格)。
我要匹配的字符串中有双引号,后跟一个冒号 (:),然后是空格(或无),然后是任意数量的状态(可以是字母或数字),后跟一个逗号。为简单起见,我只是在下面的代码中使用了一个数字。
$txt = (Get-Content $file)
$oldstr = "`"status`": 1,"
$newstr = '`"status`": 0,"
if (($txt.Contains($old1)) -or ($txt.Contains($oldstr)) -or ($txt.Contains($old2))) {
$txt.Replace($oldstr, $newstr).Replace($old1, $new1).replace($old2, $new2)| Set-Content -Path $file
}
我遇到的问题是匹配$oldstr,它可能没有,冒号和状态代码之间有一个或多个空格,在本例中是一个数字,但也可能是几个不同的数字或字符串。 $newstr 不需要从 $oldstr 复制空格。此外,在上面的示例中,它使用了 Contains 中的三个条件之一。实际数据可能不包含、一个、两个或所有三个字符串。
如何匹配/包含和替换其中可以包含空格的字符串?
【问题讨论】:
-
好吧,你需要正则表达式来做到这一点;)但我无法帮助你;)
标签: string powershell replace contains