簡體   English   中英

在C#中重命名文件需要正則表達式

[英]Regex required for renaming file in C#

我需要一個正則表達式來重命名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。 就這樣。

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));

    }
}

我不確定在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#有所了解:)

干杯尤金。

這將返回第一個捕獲組中的國家: ([a-zA-Z]+)\\.svg\\.png$

我不知道C#,但是正則表達式可能是:

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

替換部分為: $1.png

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM