mirror of
https://github.com/yaobiao131/downkyicore.git
synced 2025-08-10 00:52:31 +00:00
fix: 修复特殊文件名导致闪退问题 Fixes: #18
This commit is contained in:
@@ -180,55 +180,37 @@ public static class Format
|
||||
/// <returns></returns>
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user