介绍

在管理多个带有序列号的文件时,我们使用了零填充的文件名,以方便程序进行排序。使用 Blazor WebAssembly 应用程序上传和处理多个文件时,我被告知文件名的顺序与 Windows 不同,当我检查时,文件名在 Windows 资源管理器中按自然顺序排序。 。

检查当前行为

在 Blazor WebAssembly 应用程序中指定多个文件时,我编写了以下代码。

private void LoadImageFiles(InputFileChangeEventArgs e)
{
    foreach (var file in e.GetMultipleFiles(maxAllowedFiles))
    {
    }
}

使用e.GetMultipleFiles() 可以获得的文件的顺序是文件夹中指定的排序顺序。如果用户总是按名称排序就好了,但这种假设是不合理的,所以我决定应用自然顺序排序。

安装库

搜索NuGet的时候,发现有几个库是用来按自然顺序排序的,但是我安装了下面这些库,下载量很大,很可能要维护。

NaturalSort.Extension 添加到_Imports.razor

_Imports.razor
@using NaturalSort.Extension

图书馆的使用

常规代码正常排序。

foreach (var content in contents.OrderBy(x => x.Key)) {}

OrderBy 现在可以指定为第二个参数以按自然顺序排序。

foreach (var content in contents.OrderBy(x => x.Key, StringComparison.OrdinalIgnoreCase.WithNaturalSort())) {}

综上所述

起初,我以为我必须自己实现自然顺序排序,但我很高兴我在 NuGet 上找到了一个不错的库。有一些部分还没有验证,比如日文文件名是否可以正常处理,所以想继续检查操作。


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308632949.html

相关文章: