StringHelper.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System.IO;
  2. using System.Text;
  3. using System.Text.RegularExpressions;
  4. namespace WechatBakTool.Helpers
  5. {
  6. public static class StringHelper
  7. {
  8. /// <summary>
  9. /// 清理XML中的非法字符
  10. /// </summary>
  11. /// <param name="input">需要清理的字符串</param>
  12. /// <returns>清理后的字符串</returns>
  13. public static string CleanInvalidXmlChars(string input)
  14. {
  15. if (string.IsNullOrEmpty(input))
  16. return input;
  17. // #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
  18. // 这里使用正则表达式匹配非法字符并替换
  19. return Regex.Replace(input, @"[^\u0009\u000A\u000D\u0020-\uD7FF\uE000-\uFFFD]", "");
  20. }
  21. /// <summary>
  22. /// 替换文件名中的非法字符为指定字符
  23. /// </summary>
  24. /// <param name="fileName">原始文件名</param>
  25. /// <param name="replacement">用于替换非法字符的字符,默认为 "-"</param>
  26. /// <returns>清理后的文件名</returns>
  27. public static string SanitizeFileName(string fileName, char replacement = '-')
  28. {
  29. if (string.IsNullOrEmpty(fileName))
  30. return fileName;
  31. // 处理Windows系统中文件名不允许的特殊字符
  32. char[] invalidFileNameChars = Path.GetInvalidFileNameChars();
  33. foreach (char invalidChar in invalidFileNameChars)
  34. {
  35. fileName = fileName.Replace(invalidChar, '-');
  36. }
  37. return fileName;
  38. }
  39. }
  40. }