Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#将任何字符串转换为安全的跨平台文件名?_C#_Ios_Xamarin_Cross Platform - Fatal编程技术网

C#将任何字符串转换为安全的跨平台文件名?

C#将任何字符串转换为安全的跨平台文件名?,c#,ios,xamarin,cross-platform,C#,Ios,Xamarin,Cross Platform,给定任何.NET字符串,在任何操作系统上将其转换为安全文件名的C#算法是什么?Windows、iOS、Android、Linux?目标是尽可能保留原始字符串,同时使其在任何平台上都可以安全地用作文件名。尝试使用System.IO.Path类中的GetInvalidFileNameChars()方法 System.IO.Path.GetInvalidFileNameChars() Base36可能很管用。你不想假设你的文件系统是敏感的。你还需要考虑文件名的长度,因为它不同于系统到系统。我不知道你

给定任何.NET字符串,在任何操作系统上将其转换为安全文件名的C#算法是什么?Windows、iOS、Android、Linux?目标是尽可能保留原始字符串,同时使其在任何平台上都可以安全地用作文件名。

尝试使用System.IO.Path类中的GetInvalidFileNameChars()方法

System.IO.Path.GetInvalidFileNameChars()

Base36可能很管用。你不想假设你的文件系统是敏感的。你还需要考虑文件名的长度,因为它不同于系统到系统。我不知道你可以使用的任何内置方法。我自己生成了Windows到Linux的检查。您对转换有任何限制吗?例如“应该类似于原始字符串”或“原始字符串的1对1映射”或长度或字符集限制?在非常通用的情况下,转换将与创建新guid一样有用。。。就像将10K长的汉字字符串转换为纯ASCII一样……是的,目标是尽可能保留原始字符串,同时使其在任何平台上都可以安全地用作文件名。这是否可以处理Windows文件名可以是
“Space Here”
,而对于Linux,它将其转换为
“Space\Here”的情况
?我知道我以前遇到过Windows到Linux的间距问题,只是好奇而已