给定一个字符串和一个字符数组:
string userDir = WindowsIdentity.GetCurrent().Name;
char[] chars Path.GetInvalidPathChars();
如果要替换“userDir”字符串中“chars”中的所有字符,以从用户名中生成一个有效的目录名称。或者我可以假设每个用户名都是一个有效的目录吗?
我最好的想法是嵌套两个循环......但我正在寻找一个更短的解决方案。
或者是否有其他方法可以生成有效的目录名称?
最佳答案
假设您的代码:
string userDir = WindowsIdentity.GetCurrent().Name;
char[] chars = Path.GetInvalidPathChars();
你总是可以这样做:
Array.ForEach(chars, c => userDir = userDir.Replace(c, '_'));
用下划线(或您喜欢的任何中性字符...)替换任何无效字符。
更新:正如 Steve Fallows 指出的那样,\
和 :
是有效的路径字符,但不是有效的文件夹名称字符。相反,我们应该使用 Path.GetInvalidFileNameChars()
方法:
char[] chars = Path.GetInvalidFileNameChars();
然后像以前一样继续。
关于c# - 替换字符串中的多个字符(创建有效的文件夹名称),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9708636/