我正在使用c#并需要重命名很多文件。它们都遵循相同的命名约定。比如AA-A0000-(1 +) - A_words-sdsd_morewords。唯一的问题是所有人都遵循这种模式,但A0000和(1+)部分将文件更改为文件。如果字符串遵循该模式,如何运行我的自定义函数呢?
如果文件以两个字母开头,一个字母后跟4个数字,另一个连字符,一个数字,然后是另一个连字符,然后更改文件名,怎么说呢?
答案 0 :(得分:2)
正如评论者指出的那样,正则表达式是你的答案。在.NET中,它使用Regex类。您可以查看一些正则表达式的教程; .NET版本记录在https://msdn.microsoft.com/en-us/library/az24scfc.aspx。
根据上面示例中文件名的不同部分的更改方式,您可以更改正则表达式以使其适合。例如,
Regex.Replace(fileName, @"[a-z ]+-A(\d{4}-\(\d+)", "BB-B$1", RegexOptions.IgnoreCase);
将匹配 AA-A0000-(1 +)...... , AA-A3456-(72 +)...... , C D-A3456 - (72 +)...... 等,用B代替A(和“CD”)。有关此操作的示例,请参阅https://dotnetfiddle.net/hFpUkW。
答案 1 :(得分:1)
您可以使用正则表达式。
如果您的文件名看起来像,例如:
aB-C0101-2-some text that contains-Numbers_01987etc.ext
然后匹配它的模式是:
[a-zA-Z]{2}-[a-zA-Z]\d{4}-\d-[\s0-9a-zA-Z_-]+\.[a-zA-Z]{3}
以下是一些其他资源:
教程:http://www.regular-expressions.info/tutorial.html
在线测试正则表达式(还有很多):
在C#中使用Regex.Replace()
方法的示例: