Powershell:使用哈希表替换字符串
发布时间:2020-12-15 05:07:00 所属栏目:Java 来源:网络整理
导读:好的,所以我设置了一个哈希表,其名称是要替换的,键是要替换的,如下所示: $r = @{ "dog" = "canine"; "cat" = "feline"; "eric" = "eric cartman"} 接下来我该怎么办?我试过这个: (Get-Content C:scriptstest.txt) | Foreach-Object { foreach ( $e in $
好的,所以我设置了一个哈希表,其名称是要替换的,键是要替换的,如下所示:
$r = @{ "dog" = "canine"; "cat" = "feline"; "eric" = "eric cartman" } 接下来我该怎么办?我试过这个: (Get-Content C:scriptstest.txt) | Foreach-Object { foreach ( $e in $r.GetEnumerator() ) { $_ -replace $e.Name,$e.Value } } | Set-Content C:scriptstest.txt.out 但它根本不起作用,只是将每行写入三次,而不更换任何东西. 编辑:包含test.txt: dog cat eric test.txt.out: dog dog dog cat cat cat eric eric eric 解决方法
这是一种方法:
$file = Get-Content C:scriptstest.txt foreach ($e in $r) { $file = $file -replace $e.Name,$e.Value } Set-Content -Path C:scriptstest.txt.out -Value $file 你看到每一行三次的原因是由于嵌套的foreach循环.对于文件中的每一行,每个哈希表条目运行一次替换操作.这不会更改源文件,但默认情况下它会输出替换的结果(即使没有更改). 您可以先将文件读入变量,然后使用循环替换来更新该变量,从而获得所需的功能.您也不需要为文件内容单独的foreach循环;每个哈希表条目的一次传递中,替换可以针对全文运行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |