基本上我试图找到一种方法来放置一个变量来替换powershell中的一行。
当前脚本:
$switches = get-outlookinbox | where subject -eq "Hello"
$e = $switches.body
$e = $e.replace("Hello:","")
$e = $e.replace(" Number","")
$e = $e.replace(":1","")
$e = $e.replace(":2","")
$e = $e.replace(":3","")
$e = $e.replace(":4","")
$e = $e.replace(":99","")
你可以看到我要去的地方......但是我不想要99行替换代码,对此有何想法? 此外,数字必须:在它的前面,否则替换将破坏文件,因为它只包含IP和端口,它是我想从输出中删除的端口。
答案 0 :(得分:2)
您可以使用简单的foreach
loop并从99
到1
进行迭代:
foreach ($n in 99..1)
{
$e = $e.Replace(":$n", " ")
}
或者,如果您更喜欢一行:
foreach ($n in 99..1) { $e = $e.Replace(":$n", " ") }
演示:
PS > $mystr = "a:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20b"
PS > foreach ($n in 20..1) { $mystr = $mystr.replace(":$n", "") }
PS > $mystr
ab
PS >
答案 1 :(得分:2)
正则表达式:regex101.com
$e = $e -replace ':\d+',""
无需循环
答案 2 :(得分:2)
当你在它的时候,也可以把它们全部拿走:
$e -replace 'Hello:| Number|:\d{1,2}'