如何在文件名中转义无效字符?我ask this question once before并用解决方案写了一堂课。现在我想扩展它。我的网站将能够检测用户所使用的操作系统。所以基于我要么1)想要基于用户所在的FS / OS逃生或2)逃避它以便它适用于所有文件系统。
哪些字符可能在Windows 7或Linux上有效(我不确定我当前的Linux FS设置为什么)在XP上无效或在Windows或Mac上有效而在linux上无效?
答案 0 :(得分:1)
是否会向用户显示目录名称,如果是,是否需要看起来像用户名(基于其他问题中的信息)?如果没有,您可以将其拆分为字符数组,将每个字符的值转换为十六进制表示形式,并将它们放在一个字符串中。这应该适用于任何文件系统。
private static string ToHexString(string input)
{
return string.Join("", input.ToCharArray()
.Select(c => string.Format("{0:x}", (int)c))
.ToArray());
}
答案 1 :(得分:0)
解决方案
[A-Za-z._-]
并转义不属于范围的字符