C#:从文件名字符串中去除非法字符

标签 c# expression

为什么这不会做任何事情,输出与输入相同?我很困惑!!!

string name = ";;;'']][[ zion \\\[[[]]]"  
char[] invalidChars = System.IO.Path.GetInvalidPathChars();
string invalidString = Regex.Escape(new string(invalidChars));

string valid = Regex.Replace(name, "[" + invalidString + "]", "");

最佳答案

编辑:

我认为这可能只是测试数据不完善的情况(以及其他人建议的功能更改)。试试这个:

string name = "tru\\e.jpg";
char[] invalidChars = System.IO.Path.GetInvalidFileNameChars();
string invalidString = Regex.Escape(new string(invalidChars));
string valid = Regex.Replace(name, "[" + invalidString + "]", "");
Console.WriteLine(valid);

我得到“true.jpg”输出。在生产中使用它之前,我肯定会建议进行更多测试! :)

关于C#:从文件名字符串中去除非法字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1403083/

相关文章:

c# - 从 ListView 中拖动文件

c# - 为什么这个正则表达式匹配额外的字段?

linux - 正则表达式和 grep

javascript - 为什么 javascript 中的 slice() 和 substr() 方法对正则表达式不起作用?

java - 我收到3个非法的表达开始错误?

c# - 如何在单独的 AppDomain 中托管 IronPython 引擎?

c# - 向 Entity Framework 中的表添加虚拟列?

c# - 在没有 'cycles' 的情况下按程序生成迷宫

c# - 将 DataGridTextColumn 的 IsReadOnly 绑定(bind)到 DataGridTemplateColumn 复选框 IsChecked

java - 带变量但不带表达式的 If 语句