簡體   English   中英

從字符串中提取日期格式

[英]Extract a format of date from a string

我需要從給定的字符串中提取出生日期。 格式始終為"ddMMMyy" (for example "22NOV83")

問題是在dob之前和之后可能存在其他字符。 可能的輸入是: "DOB: 22NOV83", "CUSTOMER A DOB: 22NOV", "22NOV83 BLA BLA"

我認為通過使用這個正則表達式:

^\d{2}[a-zA-Z]{3}\d{2}$

我可以檢查字符串是否計算日期, 但是如何檢查字符串的一部分是否計算日期而不是提取它?

任何幫助,將不勝感激

刪除“^”和“$”

Regex.Match( "CUSTOMER A DOB: 22NOV99 blah", @"\\d{2}[a-zA-Z]{3}\\d{2}" );

這是一個應該有用的小片段。 請注意,您可以將Regex.Match()與regex模式中的其他組一起使用,以執行進一步的驗證。 此外,如果其他數據可能在您希望提取的數據之外具有有效日期,則會使該過程進一步復雜化。

  var extractedDates = new List<DateTime>();

  foreach (var s in inputs) {
    var m = Regex.Match(s, @"(\d{2}[A-Za-z]{3}\d{2})");
    if (m.Groups.Count == 1) {
      // No match
      continue;
    }
    try { 
      extractedDates.Add(DateTime.Parse(m.Groups[0].Value));
    } catch (FormatException) {
      // Regex matched but something else was wrong, i.e. 98ALS98
    }
  }

使用此模式匹配日期

  (?:[DOB:]?\s+(\d{2}[a-zA-Z]{3}\d{2}))

希望這可以幫助

    DateTime d = new DateTime();
    string s = "CUSTOMER A DOB: 22NOV83"; // any string that contains date in <dd><3 chars of Month><YY>
    string date = s.Substring(s.IndexOfAny("0123456789".ToCharArray()),7);
    d = DateTime.Parse(date);
    Response.Write(d);

變量'date'將以字符串形式顯示日期,'d'將在DateTime中具有該日期。

如果沒有其他字符串將有數字,這將是有用的。

或者使用正則表達式其他帶數字的字段沒有問題:

string s = "your input";
    Match d = Regex.Match(s, @"\d{2}[a-zA-Z]{3}\d{2}");
    Response.Write(d);

如果這有用,請告訴我。

使用單詞邊界而不是錨點:

\b(\d{2}[a-zA-Z]{3}\d{2})\b

DOB在第1組中。

暫無
暫無

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

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