我允许用户选择他想要的任何用户名,它可以在所有如任何东西
AC♀¿!$"Man'@
现在我需要创建一个目录给他。 什么功能我用逃跑的文本,所以我不一个FS问题/例外?
我允许用户选择他想要的任何用户名,它可以在所有如任何东西
AC♀¿!$"Man'@
现在我需要创建一个目录给他。 什么功能我用逃跑的文本,所以我不一个FS问题/例外?
使用Path.GetInvalidFileNameChars
或Path.GetInvalidPathChars
检查字符删除。
http://msdn.microsoft.com/en-us/library/system.io.path.getinvalidfilenamechars.aspx
无论你替换无效字符或删除它们,也总是会成为冲突的可能性。 如果我是你,我就必须为用户单独的主键(GUID也许),并使用该目录名。 这样,你可以有你的用户名什么,你想,而不必担心无效的目录名。
根据如果你的字符的ASCII / Unicode的,则可以使用字节/字符值作为替代,并使用一些字符来标记这些替换的字符(如下划线),让你像_001_255_200ValidPart_095_253
。 请注意,您必须更换标记字符,太( _095
在本例中,95是下划线的ASCII码)。
我认为最好的方法是创建一个无效的文件系统字符映射为一个有效的替换字符串的字典。 然后扫描无效字符的字符串,有效字符串代替你去。 这将允许用户挑选他们想要的东西,给你的一致性,如果你想将它放回用户的名称翻译。
你不会找到一种方式来逃避将在每个实例给出一个有效的非争食目录名的用户名。
一个更可靠的方法是创建使用一些arbitary约定的目录,然后存储两个之间的映射。 这也提供了在您的用户想要改变名称的能力的情况下支持。
检查出的问题# 663520更多关于这一点。
它的用户需要知道他/她的目录的确切名称? 如果不是,为什么不创建使用任意性的规则和准每一个他的主人在一个数据库或目录的东西?