diff --git a/DownKyi.Core/Utils/Format.cs b/DownKyi.Core/Utils/Format.cs index 4f00425..dacf6f3 100644 --- a/DownKyi.Core/Utils/Format.cs +++ b/DownKyi.Core/Utils/Format.cs @@ -180,55 +180,37 @@ public static class Format /// public static string FormatFileName(string originName) { - string destName = originName; + var destName = originName; // Windows中不能作为文件名的字符 - destName = destName.Replace("\\", " "); - destName = destName.Replace("/", " "); - destName = destName.Replace(":", " "); - destName = destName.Replace("*", " "); - destName = destName.Replace("?", " "); - destName = destName.Replace("\"", " "); - destName = destName.Replace("<", " "); - destName = destName.Replace(">", " "); - destName = destName.Replace("|", " "); + // destName = destName.Replace("\\", " "); + // destName = destName.Replace("/", " "); + // destName = destName.Replace(":", " "); + // destName = destName.Replace("*", " "); + // destName = destName.Replace("?", " "); + // destName = destName.Replace("\"", " "); + // destName = destName.Replace("<", " "); + // destName = destName.Replace(">", " "); + // destName = destName.Replace("|", " "); // 转义字符 - destName = destName.Replace("\a", ""); - destName = destName.Replace("\b", ""); - destName = destName.Replace("\f", ""); - destName = destName.Replace("\n", ""); - destName = destName.Replace("\r", ""); - destName = destName.Replace("\t", ""); - destName = destName.Replace("\v", ""); + // destName = destName.Replace("\a", ""); + // destName = destName.Replace("\b", ""); + // destName = destName.Replace("\f", ""); + // destName = destName.Replace("\n", ""); + // destName = destName.Replace("\r", ""); + // destName = destName.Replace("\t", ""); + // destName = destName.Replace("\v", ""); + destName = Path.GetInvalidFileNameChars().Aggregate(destName, (current, c) => current.Replace(c.ToString(), string.Empty)); // 控制字符 - destName = Regex.Replace(destName, @"\p{C}+", string.Empty); + + + // 移除前导和尾部的空白字符、dot符 + destName = destName.Trim(); + destName = destName.Trim('.'); // 如果只有空白字符、dot符 - if (destName == " " || destName == ".") - { - return "[empty title]"; - } - - // 移除前导和尾部的空白字符、dot符 - int i, j; - for (i = 0; i < destName.Length; i++) - { - if (destName[i] != ' ' && destName[i] != '.') - { - break; - } - } - - for (j = destName.Length - 1; j >= 0; j--) - { - if (destName[j] != ' ' && destName[j] != '.') - { - break; - } - } - - return destName.Substring(i, j - i + 1); + return destName is "" or "." ? "[empty title]" : destName; } } \ No newline at end of file