我认为我过于复杂,但我正在寻找一个VB.Net代码来“过滤”文件名。
方案: 我的公司在服务器上有一个文件夹,上面有超过65,000个文件。读取这些文件的新计算机区分大小写,只接受“* .S4”文件扩展名。
所以,我需要将所有文件名转换为“* .S4”,但我希望选择用我指定的模式替换每个文件。
查找> test.s4
替换> test_1.S4
查找> * .s4
替换> * _1.S4
'Inputs:
Dim Filename As String = "ThisIsAnExample.s4"
Dim Find As String = "*.s4"
Dim Replace As String = "*.S4"
Find = Find.Replace("*", "(.*)")
Replace = Replace.Replace("*", "(.*)")
Dim rgxExp As New System.Text.RegularExpressions.Regex(Find)
MsgBox(rgxExp.Replace(Filename, Replace))
我知道它可能,我在Javascript中写了一个类似的脚本。
答案 0 :(得分:0)
你不能这样做吗?
Dim input As String = "ThisIsAnExample.s4"
Dim pattern As String = "\.s4$"
Dim replacement As String = ".S4"
Dim rgx As New Regex(pattern)
Dim result As String = rgx.Replace(input, replacement)
Console.WriteLine("Original String: {0}", input)
Console.WriteLine("Replacement String: {0}", result)
答案 1 :(得分:0)
如果您想使用c#而不使用正则表达式,可以使用以下
private void UppercaseExtension(string filepath)
{
//ensure the source file exists
if (!File.Exists(filepath))
return;
//get the parts of the filepath
string filename = Path.GetFileNameWithoutExtension(filepath);
string extension = Path.GetExtension(filepath).ToUpperInvariant();
string folderPath = Path.GetDirectoryName(filepath);
try
{
//rename the file using the uppercase extension
File.Move(filepath, Path.Combine(folderPath, filename + extension));
}
catch (Exception ex)
{
//failed to rename
}
}
如果您想限制文件类型,可以在方法中添加检查以执行此操作,或者可以限制传递给它的文件路径。