C# 正则表达式-从文件名中删除(1)
我有一些同名的文件,但附加了“(1)”“(2)”“(3)”。不幸的是,我对正则表达式很反感。有人能帮我用正则表达式字符串从整个文件名中去掉尾随(2)吗 例如:C# 正则表达式-从文件名中删除(1),c#,regex,C#,Regex,我有一些同名的文件,但附加了“(1)”“(2)”“(3)”。不幸的是,我对正则表达式很反感。有人能帮我用正则表达式字符串从整个文件名中去掉尾随(2)吗 例如: MyFile(1).jpg >> MyFile.jpg AnotherFile(3).docx >> AnotherFile.docx Last.Example.Boo(999).xlsx >> Last.Example.Boo.xlsx 非常感谢 可以这样做: string name = "Last
MyFile(1).jpg >> MyFile.jpg
AnotherFile(3).docx >> AnotherFile.docx
Last.Example.Boo(999).xlsx >> Last.Example.Boo.xlsx
非常感谢 可以这样做:
string name = "Last.Example.Boo(999).xlsx";
string newName = Regex.Replace(Path.GetFileNameWithoutExtension(name), @"\(\d+\)$", "")
+ Path.GetExtension(name);
这将删除文件名中最后出现的
(任何编号)
。通过regex,它将这样做
string result = Regex.Replace(str, @"\(\d+\)(?=\.[^.]+$)", "");
可能甚至不需要正则表达式。将文件名拆分为basename+扩展名,然后根据最后一个
(
的位置执行一个简单的子字符串操作就可以了…我本来打算这么做的,但是如果(2)已经存在,我会得到像“myfilename(2)(3).gif”这样的文件。我想去掉它,这样我就可以依次测试(1)然后(2)然后(3)…直到我发现一个文件名未被使用。这只是意味着您没有使用“剥离”版本来构建新文件名。