![]() |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
| Welcome to Windows Vista Forums. Our forum is dedicated to helping you find solutions with any problems, errors or issues you are experiencing with Windows Vista. The Vista forum also covers news and updates and has an extensive Windows Vista tutorial section that covers a wide range of tips and tricks. |
| |||||||
![]() |
| |
| | #1 (permalink) |
| | Replacing Multiple Characters In A String I created a powershell script to create directories and rename files based on MP3 tags.. MP3 tags occasionally have characters the can't be used in filenames/folders.. My solution looks a bit ugly.. Is there a more efficient way to replace all the special characters in a string than this? --------------------------------------------------------------------------------- ((((((((((" " + $media.Tag.Album).Trim()).Replace( ":" , " " )).Replace("?" , " ")).Replace("/" , " ")).Replace("\" , " ")).Replace("|" ," ")).Replace("*" , " ")).Replace("<" , " ")).Replace(">" , " ")).Replace('"' , "") --------------------------------------------------------------------------------- Note: $media.Tag.Album would return a string like "Is there A Key?/Are you there?". Creating a folder or file with that name would fail.. My solution does remove all the special characters in a string. A couple of the characters are replaced with nothing rather than a space which was intentional. Any suggestions? Thanks |
My System Specs![]() |
| | #2 (permalink) |
| | Re: Replacing Multiple Characters In A String look at the -replace operator It will replace a RegEx with another string $string -replace "ThisRegEx","WithThisOne" Brandon Shell --------------- Blog: http://www.bsonposh.com/ PSH Scripts Project: www.codeplex.com/psobject J> I created a powershell script to create directories and rename files J> based on MP3 tags.. J> J> MP3 tags occasionally have characters the can't be used in J> filenames/folders.. J> J> My solution looks a bit ugly.. Is there a more efficient way to J> replace all the special characters in a string than this? J> J> --------------------------------------------------------------------- J> ------------ J> J> ((((((((((" " + $media.Tag.Album).Trim()).Replace( ":" , " " J> )).Replace("?" , " ")).Replace("/" , " ")).Replace("\" , " J> ")).Replace("|" ," ")).Replace("*" , " ")).Replace("<" , " J> ")).Replace(">" , " ")).Replace('"' , "") J> J> --------------------------------------------------------------------- J> ------------ J> J> Note: $media.Tag.Album would return a string like "Is there A J> Key?/Are you there?". J> J> Creating a folder or file with that name would fail.. J> J> My solution does remove all the special characters in a string. A J> couple of the characters are replaced with nothing rather than a J> space which was intentional. J> J> Any suggestions? J> J> Thanks J> |
My System Specs![]() |
| | #3 (permalink) |
| | Re: Replacing Multiple Characters In A String PowerShell's Test-Path has an -IsValid switch that will check a path's syntax, if it returns $false then replace the unwanted chars: # build an alternaton regex pattern with the unwanted chars: $fChars = ':', '?', '/', '\', '|', '*', '<', '>', '"' $pat = [string]::join('|', ($fChars | % {[regex]::escape($_)})) $name = '"Is there A Key?/Are you there?"' # replace any unwanted char wth a '_' if path is not valid if (!(test-path $name -isValid)) {$name = $name -replace $pat, '_'} $name $name = '"Is there A Key?/Are you there?"' # replace any unwanted char wth nothing if path is not valid if (!(test-path $name -isValid)) {$name = $name -replace $pat} $name -- Kiron |
My System Specs![]() |
| | #4 (permalink) |
| | Re: Replacing Multiple Characters In A String Missed the ' ' for some and nothing for the rest unwanted chars... # build two alternation regex patterns with the unwanted chars: $fChars1 = ':', '?', '/', '\', '*', '<', '>' $fChars2 = '|', '"' $pat1 = [string]::join('|', ($fChars1 | % {[regex]::escape($_)})) $pat2 = [string]::join('|', ($fChars2 | % {[regex]::escape($_)})) $name = '"Is there A Key?/Are you there?"' # replace the unwanted char wth a ' ' or nothing if path is not valid if (!(test-path $name -isValid)) { $name = $name -replace $pat1, ' ' -replace $pat2 } $name -- Kiron |
My System Specs![]() |
| | #5 (permalink) |
| | Re: Replacing Multiple Characters In A String Cool. Very interesting. Thanks for your help! "Kiron" wrote: Quote: > Missed the ' ' for some and nothing for the rest unwanted chars... > > # build two alternation regex patterns with the unwanted chars: > $fChars1 = ':', '?', '/', '\', '*', '<', '>' > $fChars2 = '|', '"' > $pat1 = [string]::join('|', ($fChars1 | % {[regex]::escape($_)})) > $pat2 = [string]::join('|', ($fChars2 | % {[regex]::escape($_)})) > > $name = '"Is there A Key?/Are you there?"' > # replace the unwanted char wth a ' ' or nothing if path is not valid > if (!(test-path $name -isValid)) { > $name = $name -replace $pat1, ' ' -replace $pat2 > } > $name > > -- > Kiron > |
My System Specs![]() |
![]() |
| Thread Tools | |
| |
Similar Threads | ||||
| Thread | Forum | |||
| Remove characters in a string | VB Script | |||
| Select first 16 characters in a string | PowerShell | |||
| Replacing String Value in Array does not work | PowerShell | |||
| How to Randomize characters in a string | VB Script | |||
| Removing characters from a string | PowerShell | |||