Как регулярное выражение удалить несколько недопустимых символов в powershell?

Я новичок в PowerShell и хотел бы знать, есть ли способ удалить определенные вхождения недопустимых символов с помощью PowerShell?

/RAM-_Tranva-_Bi.pdf - В этом случае я бы очень хотел убрать "-__" из имени файла.

/us-LRT---Atten.pdf - В этом случае я хотел бы удалить "---" из имени файла

Я пытался:

-заменить [-]+, ""

-заменить -[3], ""

-заменить "[#%*:‹>?/|-_]", ""

Вроде не работает ни как...

Кто-нибудь может помочь, пожалуйста?


person Cherubel    schedule 27.11.2014    source источник


Ответы (2)


Ваша проблема в том, что вам нужно заключить свои значения в одинарные кавычки try :

"/RAM-_Tranva-_Bi.pdf"  -replace '[-]+',''

or :

"/us-LRT---Atten.pdf "  -replace '[-]+',''
"/us-LRT---Atten.pdf "  -replace '[-]3',''
person JPBlanc    schedule 27.11.2014

Я, наконец, понял что-то другое.

$destinationUrl = [string]::Format("{0}{1}", $destinationList.RootFolder.ServerRelativeUrl, (($item.FullName.Replace($rootPath, "") -replace "[#%*:<>?/|]") -replace "[\\]", "/"));

Работает как шарм и экономит мне кучу строк кода, где я должен учитывать каждую вещь, которая идет не так, как надо.

person Cherubel    schedule 28.11.2014
comment
Я не понимаю, вы пропустили кавычки, используя оператор -replace, и вы даете поворот в качестве ответа? - person JPBlanc; 03.12.2014
comment
Я никогда не использую кавычки, так как это отнимает много времени и не нужно. - person Cherubel; 08.12.2014
comment
Вы просто можете видеть, что он работает с этими одинарными кавычками, как вы просите. - person JPBlanc; 09.12.2014