namespace DownKyi.Core.Utils; public static class Format { /// /// 格式化Duration时间 /// /// /// public static string FormatDuration(long duration) { string formatDuration; if (duration / 60 > 0) { var dur = duration / 60; formatDuration = dur / 60 > 0 ? $"{dur / 60}h{dur % 60}m{duration % 60}s" : $"{duration / 60}m{duration % 60}s"; } else { formatDuration = $"{duration}s"; } return formatDuration; } /// /// 格式化Duration时间,格式为00:00:00 /// /// /// public static string FormatDuration2(long duration) { string formatDuration; if (duration / 60 > 0) { var dur = duration / 60; formatDuration = dur / 60 > 0 ? $"{dur / 60:D2}:{dur % 60:D2}:{duration % 60:D2}" : $"00:{duration / 60:D2}:{duration % 60:D2}"; } else { formatDuration = $"00:00:{duration:D2}"; } return formatDuration; } /// /// 格式化Duration时间,格式为00:00 /// /// /// public static string FormatDuration3(long duration) { string formatDuration; if (duration / 60 > 0) { var dur = duration / 60; formatDuration = dur / 60 > 0 ? $"{dur / 60:D2}:{dur % 60:D2}:{duration % 60:D2}" : $"{duration / 60:D2}:{duration % 60:D2}"; } else { formatDuration = $"00:{duration:D2}"; } return formatDuration; } /// /// 格式化数字,超过10000的数字将单位改为万,超过100000000的数字将单位改为亿,并保留1位小数 /// /// /// public static string FormatNumber(long number) { return number switch { > 99999999 => (number / 100000000.0f).ToString("F1") + "亿", > 9999 => (number / 10000.0f).ToString("F1") + "万", _ => number.ToString() }; } /// /// 格式化网速 /// /// /// public static string FormatSpeed(float speed) { return speed switch { <= 0 => "0B/s", < 1024 => $"{speed:F2}B/s", < 1024 * 1024 => $"{speed / 1024:F2}KB/s", _ => $"{speed / 1024 / 1024:F2}MB/s" }; } /// /// 格式化字节大小,可用于文件大小的显示 /// /// /// public static string FormatFileSize(long fileSize) { return fileSize switch { <= 0 => "0B", < 1024 => fileSize + "B", < 1024 * 1024 => (fileSize / 1024.0).ToString("#.##") + "KB", < 1024 * 1024 * 1024 => (fileSize / 1024.0 / 1024.0).ToString("#.##") + "MB", _ => (fileSize / 1024.0 / 1024.0 / 1024.0).ToString("#.##") + "GB" }; } /// /// 去除非法字符 /// /// /// public static string FormatFileName(string originName) { var destName = originName; destName = Path.GetInvalidFileNameChars().Aggregate(destName, (current, c) => current.Replace(c.ToString(), string.Empty)); var cleanedName = destName .SkipWhile(c => c is ' ' or '.') .Reverse() .SkipWhile(c => c is ' ' or '.') .Reverse() .ToArray(); return new string(cleanedName); } }