linux - 点网核心 : cross platform version of GetInvalidFileNameChars?

标签 linux windows ubuntu operating-system .net-core

我正在构建一个将在 Windows 和 Ubuntu 系统上运行的 .Net Core 2.0 控制台应用程序。我有一个字符串需要转换成一个安全的文件名。目前我正在使用以下代码来实现这一点:

var safeName = string.Join("-", name.Split(Path.GetInvalidFileNameChars()));

它可以工作,但它会在不同的操作系统上产生不同的结果,因为 Linux 允许使用 Windows 不允许的字符。我喜欢在所有系统上产生相同结果的解决方案。

是否有 GetInvalidFileNameChars跨平台版本可以为所有平台返回字符?

最佳答案

我认为 BCL 中没有“跨平台”版本,但您可以通过复制 Windows version of GetInvalidFileNameChars 轻松自己制作一个。 ,因为 Unix version只是其中的一个子集,它们不太可能经常更改:

        public static char[] GetInvalidFileNameChars() => new char[]
        {
            '\"', '<', '>', '|', '\0',
            (char)1, (char)2, (char)3, (char)4, (char)5, (char)6, (char)7, (char)8, (char)9, (char)10,
            (char)11, (char)12, (char)13, (char)14, (char)15, (char)16, (char)17, (char)18, (char)19, (char)20,
            (char)21, (char)22, (char)23, (char)24, (char)25, (char)26, (char)27, (char)28, (char)29, (char)30,
            (char)31, ':', '*', '?', '\\', '/'
        };

关于linux - 点网核心 : cross platform version of GetInvalidFileNameChars?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47119952/

相关文章:

linux - 从安装的 CD 光盘递归下载文件的问题

c - limits.h 中定义的限制 FILENAME_MAX 是否适用于目录?

windows - 是否可以从 Cygwin ssh session 正确执行 qwinsta?

windows - 如何使窗口绝对最顶层?

linux - R Windows/Linux 猫换行符格式之间的差异

c - 构建 MEX 文件时,在 ';' token 之前应为 ',' 、 ')' 或 '='

c# - 在Win32_Volume中设置属性

ubuntu - Cytoscape 3.7.2 在 Ubuntu 19.10 中不起作用

linux - make 中是否有等同于 -j 的 checkinstall 选项?

ubuntu - 使用 prefer-dynamic 时无法执行 hello world 项目