2017-04-12 4 views
0

Ich versuche, das Wort of in einer Zeichenfolge mit einem PowerShell-Skript zu ersetzen.Ersetzen Sie ein Wort in einer Zeichenfolge durch Powershell

Ich habe eine if-Anweisung versucht:

$string = "a tale of two cities " 

$array = $string -split " "  

if($array -match 'of') { 
    $array -replace 'bob' 
} 

Die Anweisung funktioniert bei of Erkennung, aber ich weiß nicht, wie es mit einem anderen Wort zu ersetzen.

+1

Sie sollten immer die Dokumentation überprüfen, und vielleicht ein paar Webseiten über die Befehle, mit denen Sie Probleme haben. Für dieses Problem würde ich vorschlagen, dass Sie [Get-Help about_Comparison_Operators] (https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.core/about/about_comparison_operators) betrachten und [diese Scripting Guy-Spalte] (https://blogs.technet.microsoft.com/heyscriptingguy/2011/03/21/use-powershell-to-replace-text-in-strings/). –

Antwort

1

Ein einzelner Ausdruck der -replace Operator ist alles, was Sie brauchen:

> 'a tale of two cities' -replace '\bof\b', 'bob' 
a tale bob two cities 

Wenn Sie die resultierende Zeichenfolge spaltete sich in Wörter durch ein Leerzeichen wollen:

$array = -split 'a tale of two cities' -replace '\bof\b', 'bob' 
+0

wäre es möglich, die zu ersetzende Welt wie "von" in einem Array zu haben und das Array nach einer Liste von Wörtern zu testen? Wie: $ array = $ array -replace $ wordList –

+0

@williamyocom: Nein, '-replace' unterstützt nur eine einzige Zeichenkette auf dem RHS. Ich schlage vor, dass Sie eine neue Frage stellen (zögern Sie nicht, lassen Sie es mich wissen, sobald Sie dies getan haben). – mklement0

0

ich die Methode Version etwas einfacher finden :

"a tale of two cities ".Replace('of','bob') 

Oder auch:

$string = "a tale of two cities " 
$string.Replace('of','bob') 
+0

Ja, in diesem speziellen Fall ist die _literal_ Ersetzung, die die '.Replace()' _method_ der '[string]' .NET Klasse durchführt, einfacher, aber im Allgemeinen ist der _regex_basierte _replace_operator_ von Powershell flexibler. – mklement0

Verwandte Themen