如何用一个表示任何字符串或任何数字的变量替换字符串和数字值?

时间:2015-02-13 14:58:58

标签: c# regex

我正在使用c#并需要重命名很多文件。它们都遵循相同的命名约定。比如AA-A0000-(1 +) - A_words-sdsd_morewords。唯一的问题是所有人都遵循这种模式,但A0000和(1+)部分将文件更改为文件。如果字符串遵循该模式,如何运行我的自定义函数呢?

如果文件以两个字母开头,一个字母后跟4个数字,另一个连字符,一个数字,然后是另一个连字符,然后更改文件名,怎么说呢?

2 个答案:

答案 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

在线测试正则表达式(还有很多):

http://www.regexr.com/

http://www.regexplanet.com/

在C#中使用Regex.Replace()方法的示例:

http://www.dotnetperls.com/regex-replace