0

私はいくつかのタイトルを取得しており、このテキストに年 (1950-2050) があるかどうかを調べたいのですが、2 が存在する場合は 2 年目を見つけたいです。私はすでにメソッドを作成しました。メソッドが見つからない場合は、0 を返します。

string text1 = "Name 2000";
string text2 = "Name";
string text3 = "2000 2012";
string text4 = "2012 Name";

public static int get_title_year(string title)
{
    string pattern = @"\b(?<Year1>\d{4})";
    Regex rx = new Regex(pattern);
    if (rx.IsMatch(title))
    {
        Match match = rx.Match(title);
        return Convert.ToInt16(match.Groups[1].Value);
    }
    else
    {
        return 0;
    }
}

私のメソッドは戻ります

2000 0 2000 2012

それ以外の

2000 0 2012 2012

4

1 に答える 1

2

次を使用して、「存在する場合は2番目の要素、そうでない場合は最初の要素」を取得できますTake(2).LastOrDefault()

public static int get_title_year(string title)
{
    string pattern = @"\b\d{4}\b";
    Regex regex = new Regex(pattern);
    int year = regex.Matches(title)
                    .Cast<Match>()
                    .Select(m => int.Parse(m.Value))
                    .Take(2)
                    .LastOrDefault();
    return year;
}
于 2012-12-23T15:03:33.233 に答える