0

たとえば、次のような特定の構文で名前が付けられた MP3 ファイルがいくつかあります。

1 - セバスチャン・イングロッソ - Calling (Feat. Ryan Tedder)

ID3 タグからトラック、アーティスト、タイトルを読み取る小さなプログラムを C# で作成しました。私がやりたいことは、ファイルが実際に上記の構文で名前が付けられていることを検証できる正規表現を書くことです。

だから私は歌と呼ばれるクラスを持っています:

class Song
{
    //Fields
    private string _filename;
    private string _title;
    private string _artist;


    //Properties
    public string Filename
    {
        get { return _filename;  }
        set { _filename = value; }
    }

    public string Title
    {
        get { return _title;  }
        set { _title = value; }
    }

    public string Artist
    {
        get { return _artist;  }
        set { _artist = value; }
    }


    //Methods

    public bool Parse(string strfile)
    {
        bool CheckFile;

        Tags.ID3.ID3v1 Song = new Tags.ID3.ID3v1(strfile, true);
        Filename = Song.FileName;
        Title = Song.Title;
        Artist = Song.Artist;


        //Check File Name Formatting
        string RegexBuilder = @"\d\s-\s" + Artist + @"\s-\s" + Title;
        if (Regex.IsMatch(Filename, RegexBuilder))
        {
            CheckFile = true;
        }
        else
        {
            CheckFile = false;
        }
        return CheckFile;
     }

したがって、ほとんどの場合、機能します。タイトルに (Feat. ) がある分、失敗します。私が思いつくことができる最も近いものは次のとおりです。

\d\s-\s\アーティスト\s-\s.*

どのテキストもテストに合格するため、これは明らかに機能しません。前もって感謝します。

4

1 に答える 1

1

\d\s-\s\Sebastian Ingrosso\s-\sCalling(\s\(Feat.*)?

これは両方で機能します:

1 - Sebastian Ingrosso - Calling (Feat. Ryan Tedder)
1 - Sebastian Ingrosso - Calling

そう:

string RegexBuilder = @"\d\s-\s" + Artist + @"\s-\s" + Title + "(\s\(Feat.*)?";

仕事をすべき

ここで試すことができます: http://gskinner.com/RegExr/

于 2012-06-17T18:41:49.413 に答える