-1

DateTime のある文字列とない文字列があります。各文字列に DateTime が含まれているかどうかを確認する必要があります。

それを手伝ってください。

文字列の例 (ロシア語):

13 сентября 2013 г., 11:27 пользователь  <support@example.com> написал:

13 сентября 2013 г., 11:29 пользователь Вячеслав Равдин <someone@example.com> написал:

13.09.2013, в 11:27, support@example.com написал(а):
4

3 に答える 3

1

DateTime.TryParseExactロシア文化と適切なフォーマット文字列で使用できます。

string russianLines = @"
13 сентября 2013 г., 11:27 пользователь написал:
13 сентября 2013 г., 11:29 пользователь Вячеслав Равдин написал:
13.09.2013, в 11:27, blablahblah...";

CultureInfo ruCult = CultureInfo.CreateSpecificCulture("ru-RU");
string[] formats = new[]{"dd MMMM yyyy", "dd.MM.yyyy"};
string[] lines = russianLines.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
var lineDates = new List<DateTime?>();
foreach (string line in lines)
{
    string strDate = null;
    string[] tokens = line.Split(',');
    string[] parts = tokens.First().Split();
    if (parts.Length == 1)
        strDate = parts.First();
    else
        strDate = string.Join(" ", parts.Take(3));
    DateTime dt;
    if(DateTime.TryParseExact(strDate, formats, ruCult, DateTimeStyles.None, out dt))
        lineDates.Add(dt);
    else
        lineDates.Add(null);
}

デバッガーでの結果:

[0] {13.09.2013 00:00:00}   System.DateTime?
[1] {13.09.2013 00:00:00}   System.DateTime?
[2] {13.09.2013 00:00:00}   System.DateTime?
于 2013-09-13T09:21:08.303 に答える
1

Regex認識したいパターンごとに forを作成し、一致するまで、またはすべてのesRegexを試すまで文字列をそれぞれに一致させる必要があります。Regex

public bool TryParseDate(string input, out DateTime result)
{
    if (MatchPattern1(input, result))
    {
       return true;
    }
    if (MatchPattern2(input, result)) 
    {
       return true;
    }
    ...
    return false;
}

メソッドはMatchPatternそれぞれ特定の正規表現を探します。

private bool MatchPattern1(string input, out DateTime result)
{
    Match match = Regex.Match(input, @"*pattern here*");
    if (match.Success)
    {
        result = *build date based on matches*;
        return true;
    }
    return false;
}

このようにして、(正規表現の有無にかかわらず)好きなようにマッチングを行い、必要に応じて複雑にすることができます。

于 2013-09-13T09:08:18.737 に答える