From 9cfef3a52fa16c343e6f6ee4b330e50707601890 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9A=E5=BD=AA?= <1315508912@qq.com> Date: Tue, 16 Jan 2024 21:42:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=89=B9=E6=AE=8A?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=90=8D=E5=AF=BC=E8=87=B4=E9=97=AA=E9=80=80?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20Fixes:=20#18?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DownKyi.Core/Utils/Format.cs | 66 +++++++++++++----------------------- 1 file changed, 24 insertions(+), 42 deletions(-) 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