替换字符串中的多个字符(生成有效的文件夹名称)

Tar*_*ion 3 c# string replace char

给定一个字符串和一组字符:

string userDir = WindowsIdentity.GetCurrent().Name;
char[] chars Path.GetInvalidPathChars();
Run Code Online (Sandbox Code Playgroud)

如果要替换"userDir"字符串中"chars"中的所有字符,则使用用户名创建有效的目录名称.或者我可以假设每个用户名都是有效的目录吗?

我最好的想法是嵌套两个循环...但我正在寻找一个更短的解决方案.

或者是否有另一种方法来生成有效的目录名称?

Jam*_*are 7

假设您的代码:

string userDir = WindowsIdentity.GetCurrent().Name;
char[] chars = Path.GetInvalidPathChars();
Run Code Online (Sandbox Code Playgroud)

你可以随时做:

Array.ForEach(chars, c => userDir = userDir.Replace(c, '_'));
Run Code Online (Sandbox Code Playgroud)

用下划线(或任何你想要的中性字符)替换任何无效的字符.

更新:正如Steve Fallows指出的那样,\并且:是有效的路径字符,但不是有效的文件夹名称字符.相反,我们应该使用该Path.GetInvalidFileNameChars()方法:

char[] chars = Path.GetInvalidFileNameChars();
Run Code Online (Sandbox Code Playgroud)

然后继续像以前一样.