Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在powershell中高效地生成多个替换命令_Powershell - Fatal编程技术网

如何在powershell中高效地生成多个替换命令

如何在powershell中高效地生成多个替换命令,powershell,Powershell,我可以看出多次使用get content命令是愚蠢的,有人知道如何提高效率吗 (Get-Content hvor_har_vi_vaeret_i_aar.html) -replace '"', '"' | set- content hvor_har_vi_vaeret_i_aar.html (Get-Content hvor_har_vi_vaeret_i_aar.html) -replace 'ae', 'æ' | set-content hvor_har_vi_vaer

我可以看出多次使用
get content
命令是愚蠢的,有人知道如何提高效率吗

(Get-Content hvor_har_vi_vaeret_i_aar.html) -replace '"', '"' | set- 
content hvor_har_vi_vaeret_i_aar.html
(Get-Content hvor_har_vi_vaeret_i_aar.html) -replace 'ae', 'æ' | set-content 
hvor_har_vi_vaeret_i_aar.html
(Get-Content hvor_har_vi_vaeret_i_aar.html) -replace 'o/', 'ø' | set-content 
hvor_har_vi_vaeret_i_aar.html
(Get-Content hvor_har_vi_vaeret_i_aar.html) -replace 'aa', 'å' | set-content 
hvor_har_vi_vaeret_i_aar.html
我希望我解释得足够好,如果你有什么不明白的地方,就写下来,然后我会尽力澄清


顺便说一句,有人知道如何使其区分大小写,比如AE=Æ而不是æ吗?

操作一次替换,您只需使用
获取/设置内容一次:

(Get-Content hvor_har_vi_vaeret_i_aar.html) -replace '"','"' -replace 'ae','æ' -replace 'o/','ø' -replace 'aa', 'å' | Set-Content hvor_har_vi_vaeret_i_aar.html
相同,但使用backtick在多行上拆分命令以使其更具可读性:

(Get-Content hvor_har_vi_vaeret_i_aar.html) `
    -replace '"','"' `
    -replace 'ae','æ' `
    -replace 'o/','ø' `
    -replace 'aa', 'å' |
    Set-Content hvor_har_vi_vaeret_i_aar.html

您可以使用的另一种方法是声明2D数组并在其中循环,我个人更喜欢这种方法,因为它非常容易让您将这些作为参数传递到函数中:

$string = 'abcdef'

$replaceArray = @(
                 @('a','1'),
                 @('b','2'),
                 @('c','3')
                )

# =============

$replaceArray | 
    ForEach-Object {
        $string = $string -replace $_[0],$_[1]
    }

Write-Output $string
123def


如果您只想从字符串中删除项,则更容易,因为您可以执行以下操作:
'a'、'b'、'c'|%{$string=$string-replace$}

什么??我发誓我昨天试过了??我一定是拼错了什么…:(很抱歉,这可能造成了一个不寻常的结果……当您在这方面工作了一段时间后,很容易错过一些东西:)对于PowerShell开发人员来说,在简单的语法问题上陷入困境是一种通行权+1对于反勾号,它们大大提高了清晰度!顺便说一句,你知道如何使它的大小写敏感,像AE=Æ而不是æ吗?
-creplace
是大小写敏感的版本。