在C#中重命名文件所需的正则表达式

时间:2012-02-06 14:32:45

标签: c# regex

我需要一个正则表达式来重命名c#中的文件。我的文件名是22px-Flag_Of_Sweden.svg.png。我希望它重命名为sweden.png

所以我需要正则表达式。请帮我。

I have various files more than 300+ like below:

22px-Flag_Of_Sweden.svg.png   - should become sweden.png
13px-Flag_Of_UnitedStates.svg.png  - unitedstates.png
17px-Flag_Of_India.svg.png - india.png
22px-Flag_Of_Ghana.svg.png - ghana.png

这些实际上是国家的标志。我想提取Countryname.Fileextension。多数民众赞成。

4 个答案:

答案 0 :(得分:1)

var fileNames = new [] {
    "22px-Flag_Of_Sweden.svg.png"
    ,"13px-Flag_Of_UnitedStates.svg.png"
    ,"17px-Flag_Of_India.svg.png"
    ,"22px-Flag_Of_Ghana.svg.png"
    ,"asd.png"
};

var regEx = new Regex(@"^.+Flag_Of_(?<country>.+)\.svg\.png$");



foreach ( var fileName in fileNames )
{
    if ( regEx.IsMatch(fileName))           
    {
        var newFileName = regEx.Replace(fileName,"${country}.png").ToLower();
        //File.Save(Path.Combine(root, newFileName));

    }
}

答案 1 :(得分:0)

我不确定这会在c#中看起来如何(尽管正则表达式很重要而不是语言),但在Java中这看起来像这样:

String input = "22px-Flag_Of_Sweden.svg.png";
Pattern p = Pattern.compile(".+_(.+?)\\..+?(\\..+?)$");
Matcher m = p.matcher(input);

System.out.println(m.matches());

System.out.println(m.group(1).toLowerCase() + m.group(2));

与此相关的部分是:

  ".+_(.+?)\\..+?(\\..+?)$"

直接联合两组。

我希望我现在知道一些C#:)

干杯尤金。

答案 2 :(得分:0)

这将返回第一个捕获组中的国家/地区:([a-zA-Z]+)\.svg\.png$

答案 3 :(得分:0)

我不知道c#,但正则表达式可能是:

^.+_(\pL+)\.svg\.png

,替换部分为:$1.png