Search code examples
c#.netstringfilepath

Is there a way of making strings file-path safe in c#?


My program will take arbitrary strings from the internet and use them for file names. Is there a simple way to remove the bad characters from these strings or do I need to write a custom function for this?


Solution

  • Ugh, I hate it when people try to guess at which characters are valid. Besides being completely non-portable (always thinking about Mono), both of the earlier comments missed more 25 invalid characters.

    foreach (var c in Path.GetInvalidFileNameChars()) 
    { 
      fileName = fileName.Replace(c, '-'); 
    }
    

    Or in VB:

    'Clean just a filename
    Dim filename As String = "salmnas dlajhdla kjha;dmas'lkasn"
    For Each c In IO.Path.GetInvalidFileNameChars
        filename = filename.Replace(c, "")
    Next
    
    'See also IO.Path.GetInvalidPathChars