c# - 替换字符串中的多个字符(创建有效的文件夹名称)

标签 c# string replace char

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

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/

相关文章:

c# - 更新命令在传递 DataRow 时需要有效的 insertCommand

c# - 如何在 C# 中对日期字段进行周末舍入(不使用 LINQ)?

javascript - 在 Javascript 中精确替换字符串

pandas - 如何用平均值填充空值

c# - Sql必须声明标量变量错误

c# - Unity 3d错误CS0246 : The type or namespace name 'ParticleEmitter' could not be found

java - 计算字符串中用户指定字符的出现次数

python - 通过插入 ':' 格式化字符串

Java 正则表达式的行为不符合逻辑。替换文本中的单词

VBA-替换字符串中的字符