2014-06-22 18 views
10

So habe ich schon ein paar Dinge ausprobiert, aber sie scheinen aus irgendeinem Grund nicht zu funktionieren.Entfernen von Leerzeichen aus einer Variablen, die Benutzer in PowerShell 4.0 eingegeben

Grundsätzlich versuche ich, dass ein Benutzer mithilfe des Cmdlets "Read-host" einen Wert eingibt, und entfernen Sie dann alle Leerzeichen.

Ich versuchte

$answer = read-host 
$answer.replace(' ' , '""') 

Und ich habe auch versucht,

$answer = read-host 
$answer -replace (' ') 

ich wahrscheinlich etwas wirklich offensichtlich fehlt bin, aber wenn mir jemand helfen könnte, oder zeigen Sie mir einen einfacheren Weg, dies zu erreichen, würde ich bin dankbar.

Ich werde die Variable in einen Befehl pipettieren und auf diese Weise entfernen, aber alle Beispiele, die ich sehe, funktionieren nicht, sehen aber viel einfacher aus.

+1

'$ str = $ str.replace ('', '')' –

Antwort

23

Die Replace Operator bedeutet ersetzen etwas mit etwas sonst; nicht mit der Entfernungsfunktion verwechselt werden.

Außerdem sollten Sie das vom Bediener verarbeitete Ergebnis an eine Variable oder an einen anderen Bediener senden. Weder .Replace(), noch -replace ändert die ursprüngliche Variable.

alle Räume zu entfernen, die Verwendung ‚jeden Raum Symbol Ersetzen durch leere Zeichenfolge

$string = $string -replace '\s','' 

Um alle Leerzeichen am Anfang und am Ende der Leitung zu entfernen, und all Doppel-and-mehr- ersetzen verwenden Leerzeichen oder Tab Symbole spacebar Symbol,

$string = $string -replace '(^\s+|\s+$)','' -replace '\s+',' ' 

oder mehr natives System.String Methode

$string = $string.Trim() 

Regexp wird bevorzugt, weil ' ' nur 'Leertaste' bedeutet und '\s' bedeutet 'Leertaste, Tabulator und andere Leerzeichen'. Beachten Sie, dass $string.Replace() 'Normal' ersetzt wird und $string -replace RegEx ersetzt, das schwerer, aber funktioneller ist.

Beachten Sie, dass RegEx haben einige Sonderzeichen wie Punkt (.), Klammern ([]()), Schrägstriche (\), Hüte (^), mathematische Zeichen (+-) oder Dollarzeichen ($), die tun müssen entwertet werden. . ('my.space.com' -replace '\.','-' =>'my-space-com' Ein Dollarzeichen mit einer Zahl (ex $1) muss

'2033' -replace '(\d+)',$('Data: $1') 
Data: 2033 

UPDATE vorsichtig auf einem rechten Teil verwendet werden. Sie könnten auch $str = $str.Trim() verwenden können, zusammen mit TrimEnd() und TrimStart() Lesen Sie mehr bei System.String MSDN-Seite.

5

Sie sind in der Nähe.

$answer.replace(' ','')

Es muss sein, keinen Platz oder Zeichen zwischen dem zweiten Satz von Anführungszeichen in der Methode replace (Ersetzen der Leerzeichen mit nichts): Sie können mithilfe des replace Methode wie folgt den Leer abzustreifen.

1

können Sie verwenden:

$answer.replace(' ' , '') 

oder

$answer -replace " ", "" 

, wenn Sie alle Leerzeichen entfernen möchten, können Sie verwenden:

$answer -replace "\s", "" 
3

Sie haben auch die Trim, TrimEnd und TrimStart Methoden der System.String Klasse. die Trimm Methode Leerzeichen Streifen wird (mit ein paar Macken Unicode) aus dem vorderen und hinteren Teil des Strings, während ein Sie können optional die zu entfernenden Zeichen angeben.

#Note there are spaces at the beginning and end 
Write-Host " ! This is a test string !%^ " 
! This is a test string !%^ 
#Strips standard whitespace 
Write-Host " ! This is a test string !%^ ".Trim() 
! This is a test string !%^ 
#Strips the characters I specified 
Write-Host " ! This is a test string !%^ ".Trim('!',' ') 
This is a test string !%^ 
#Now removing^as well 
Write-Host " ! This is a test string !%^ ".Trim('!',' ','^') 
This is a test string !% 
Write-Host " ! This is a test string !%^ ".Trim('!',' ','^','%') 
This is a test string 
#Powershell even casts strings to character arrays for you 
Write-Host " ! This is a test string !%^ ".Trim('! ^%') 
This is a test string 

TrimStart und TrimEnd die gleiche Art und Weise funktionieren nur den Anfang oder das Ende der Schnur trimmen.

Verwandte Themen