variables - Eliminando espacios de una entrada variable usando PowerShell 4.0
spaces stripping (5)
El operador Replace
significa Reemplazar algo con otra cosa ; No se confunda con la funcionalidad de eliminación.
También debe enviar el resultado procesado por el operador a una variable oa otro operador. Ni .Replace()
, ni -replace
modifican la variable original.
Para eliminar todos los espacios, use '' Reemplazar cualquier símbolo de espacio con una cadena vacía ''
$string = $string -replace ''/s'',''''
Para eliminar todos los espacios al principio y al final de la línea, y reemplazar todos los espacios de doble y más espacios o símbolos de tabulación al símbolo de la barra espaciadora, use
$string = $string -replace ''(^/s+|/s+$)'','''' -replace ''/s+'','' ''
o el método System.String
más nativo
$string = $string.Trim()
Se prefiere la expresión regular, porque '' ''
significa solo el símbolo de "barra espaciadora", y ''/s''
significa "barra espaciadora, pestaña y otros símbolos de espacio". Tenga en cuenta que $string.Replace()
reemplaza a ''Normal'', y $string -replace
reemplaza a RegEx, que es más pesado pero más funcional.
Tenga en cuenta que RegEx tiene algunos símbolos especiales como puntos ( .
), Tirantes ( []()
), barras ( /
), sombreros ( ^
), signos matemáticos ( +-
) o signos de dólar ( $
) que deben escaparse. ( ''my.space.com'' -replace ''/.'',''-''
=> ''my-space-com''
. Debe usarse un signo de dólar con un número (por ejemplo, $1
) en la parte derecha con cuidado
''2033'' -replace ''(/d+)'',$( ''Data: $1'')
Data: 2033
ACTUALIZACIÓN: También puede usar $str = $str.Trim()
, junto con TrimEnd()
y TrimStart()
. Lea más en la página de MSDN System.String .
Ya probé algunas cosas, pero no parecen funcionar por alguna razón.
Básicamente, lo que estoy tratando de hacer es que un usuario ingrese un valor mediante el cmdlet "Read-host" y luego lo elimine de cualquier espacio.
Lo intenté:
$answer = read-host
$answer.replace('' '' , ''""'')
Y:
$answer = read-host
$answer -replace ('' '')
Probablemente me esté perdiendo algo realmente obvio, pero si alguien pudiera ayudarme o mostrarme una manera más fácil de lograrlo, se lo agradecería.
Iba a canalizar la variable a un comando y la eliminaría de esa manera, pero ninguno de los ejemplos que he visto funciona, aunque parecen mucho más fáciles.
Puedes usar:
$answer.replace('' '' , '''')
o
$answer -replace " ", ""
Si desea eliminar todos los espacios en blanco puede utilizar:
$answer -replace "/s", ""
Si la cadena es
$STR = ''HELLO WORLD''
y desea eliminar el espacio vacío entre ''HOLA'' y ''MUNDO''
$STR.replace('' '','''')
replace
toma la cadena y reemplaza el espacio en blanco con una cadena vacía (de longitud 0), en otras palabras, el espacio en blanco simplemente se elimina.
También tiene los métodos Trim , TrimEnd y TrimStart de la clase System.String . El método de recorte eliminará los espacios en blanco (con un par de peculiaridades de Unicode) de la parte anterior y posterior de la cadena, mientras le permite especificar opcionalmente los caracteres que se eliminarán.
#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 y TrimEnd funcionan de la misma manera, solo recortando el inicio o el final de la cadena.
Usted está cerca. Puedes eliminar el espacio en blanco usando el método de replace
esta manera:
$answer.replace('' '','''')
No debe haber espacios ni caracteres entre el segundo conjunto de comillas en el método de reemplazo (reemplazar el espacio en blanco por nada).