2017-12-18 259 views
-2

我想用連字符替換字符串中的任何特殊字符和空格。 下面是我的代碼:Powershell用連字符替換空格和特殊字符

$c = 'This_is my code [email protected]# characters are not $ allowed% remove spaces ^&*(){}[]/_:;,.?/"''' 
$c = $c -replace [regex]::Escape('[email protected]#$%^&*(){}[]/:;,.?/"'),('-') 
Write-Host $c 

有直接的方式找到所有的特殊字符,空格和使用單個字符連字符替換

+1

定義特殊。你想要什麼角色?只是a-z,A-Z,0-9和連字符? –

+0

所以輸出應該是這樣的 - 'This_is-my-code ----- characters-are-not --- allowed - remove-spaces -----------_---- ----' –

+0

無論哪裏有空間,我都想替換連字符。無論哪裏有特殊的角色,我都想用空間替換。空間將再次被替換爲連字符。 – user2598808

回答

1

\ W將替換任何非單詞字符。它不會取代a-z, A-Z, 0-9

$c = 'This_is my code [email protected]# characters are not $ allowed% remove spaces ^&*(){}[]/_:;,.?/"''' 
$c -replace '\W','-' 

This_is-my-code-----characters-are-not---allowed--remove-spaces-----------_-------- 
0

代碼

$original = 'This_is my code [email protected]# characters are not $ allowed% remove spaces ^&*(){}[]/_:;,.?/"''' 
$desired = 'This_is-my-code-----characters-are-not---allowed--remove-sp‌​aces-----------_----‌​----' 

$replacements = "[^a-zA-Z_]" # anything that's _not_ a-z or underscore 
$result = $original -replace $replacements, '-' 

Write-Host "Original: $c" 
Write-Host "Desired : $d" 
Write-Host "Result : $r" 

結果

Original: This_is my code [email protected]# characters are not $ allowed% remove spaces ^&*(){}[]/_:;,.?/"' 
Desired : This_is-my-code-----characters-are-not---allowed--remove-sp‌​aces-----------_----‌​---- 
Result : This_is-my-code-----characters-are-not---allowed--remove-spaces-----------_-------- 
+0

'\ w'與'[a-zA-Z_]'相同'... – TheIncorrigible1