FilenameHelper.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System.Collections.Generic;
  2. using System.IO;
  3. using System.Text;
  4. namespace CueSplitter.Helpers
  5. {
  6. internal static class FilenameHelper
  7. {
  8. private static char[] _invalidCharacters=null;
  9. private static char[] GetInvalidCharacters()
  10. {
  11. var invalidChars = new List<char>();
  12. invalidChars.AddRange(Path.GetInvalidFileNameChars());
  13. invalidChars.AddRange(Path.GetInvalidPathChars());
  14. return invalidChars.ToArray();
  15. }
  16. public static char[] InvalidCharacters => _invalidCharacters ??= GetInvalidCharacters();
  17. public static string RemoveInvalidCharacters(string content, char replace = '_', bool doNotReplaceBackslashes = false)
  18. {
  19. if (string.IsNullOrEmpty(content))
  20. return content;
  21. var idx = content.IndexOfAny(InvalidCharacters);
  22. if (idx >= 0)
  23. {
  24. var sb = new StringBuilder(content);
  25. while (idx >= 0)
  26. {
  27. if (sb[idx] != '\\' || !doNotReplaceBackslashes)
  28. sb[idx] = replace;
  29. idx = content.IndexOfAny(InvalidCharacters, idx + 1);
  30. }
  31. return sb.ToString();
  32. }
  33. return content;
  34. }
  35. }
  36. }