Beispiel für reguläre Ausdrücke: Ändern von Datumsformaten

Im folgenden Codebeispiel wird die Methode Regex.Replace verwendet, um Datumsangaben zu ersetzen, die die Form mm/dd/yy haben, durch Datumsangaben, die die Form dd-mm-yy haben.

Warning

Die uneingeschränkte Verwendung von System.Text.RegularExpressions mit nicht vertrauenswürdigen Eingaben kann Anwendungen Denial-of-Service-Angriffen aussetzen. Lesen Sie bewährte Methoden für reguläre Ausdrücke in .NET, um Anleitungen zur sicheren Verwendung von .NET regulären Ausdrücken mit nicht vertrauenswürdigen Eingaben zu erhalten.

Example

static string MDYToDMY(string input)
{
   try {
      return Regex.Replace(input,
             @"\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b",
            "${day}-${month}-${year}", RegexOptions.None,
            TimeSpan.FromMilliseconds(150));
   }
   catch (RegexMatchTimeoutException) {
      return input;
   }
}
Function MDYToDMY(input As String) As String
    Try
        Return Regex.Replace(input, _
               "\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b", _
               "${day}-${month}-${year}", RegexOptions.None,
               TimeSpan.FromMilliseconds(150))
    Catch e As RegexMatchTimeoutException
        Return input
    End Try
End Function

Der folgende Code zeigt, wie die MDYToDMY Methode in einer Anwendung aufgerufen werden kann.

using System;
using System.Globalization;
using System.Text.RegularExpressions;

public class Class1
{
   public static void Main()
   {
      string dateString = DateTime.Today.ToString("d",
                                        DateTimeFormatInfo.InvariantInfo);
      string resultString = MDYToDMY(dateString);
      Console.WriteLine($"Converted {dateString} to {resultString}.");
   }

   static string MDYToDMY(string input)
   {
      try {
         return Regex.Replace(input,
                @"\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b",
               "${day}-${month}-${year}", RegexOptions.None,
               TimeSpan.FromMilliseconds(150));
      }
      catch (RegexMatchTimeoutException) {
         return input;
      }
   }
}
// The example displays the following output to the console if run on 8/21/2007:
//      Converted 08/21/2007 to 21-08-2007.
Imports System.Globalization
Imports System.Text.RegularExpressions

Module DateFormatReplacement
    Public Sub Main()
        Dim dateString As String = Date.Today.ToString("d", _
                                             DateTimeFormatInfo.InvariantInfo)
        Dim resultString As String = MDYToDMY(dateString)
        Console.WriteLine("Converted {0} to {1}.", dateString, resultString)
    End Sub

    Function MDYToDMY(input As String) As String
        Try
            Return Regex.Replace(input, _
                   "\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b", _
                   "${day}-${month}-${year}", RegexOptions.None,
                   TimeSpan.FromMilliseconds(150))
        Catch e As RegexMatchTimeoutException
            Return input
        End Try
    End Function
End Module
' The example displays the following output to the console if run on 8/21/2007:
'      Converted 08/21/2007 to 21-08-2007.

Kommentare

Das Muster für reguläre Ausdrücke \b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b wird entsprechend der folgenden Tabelle interpretiert:

Schema Description
\b Der Vergleich beginnt an einer Wortgrenze.
(?<month>\d{1,2}) Eine oder zwei Dezimalziffern abgleichen. Dies ist die month erfasste Gruppe.
/ Entsprechung für den Schrägstrich finden.
(?<day>\d{1,2}) Eine oder zwei Dezimalziffern abgleichen. Dies ist die erfasste Gruppe day.
/ Entsprechung für den Schrägstrich finden.
(?<year>\d{2,4}) Entsprechung für zwei bis vier Dezimalstellen finden. Dies ist die erfasste Gruppe year.
\b Der Vergleich endet an einer Wortgrenze.

Das Muster ${day}-${month}-${year} definiert die Ersetzungszeichenfolge wie in der folgenden Tabelle dargestellt.

Schema Description
$(day) Fügen Sie die von der day Aufnahmegruppe erfasste Zeichenfolge hinzu.
- Fügen Sie einen Bindestrich hinzu.
$(month) Fügen Sie die von der month Aufnahmegruppe erfasste Zeichenfolge hinzu.
- Fügen Sie einen Bindestrich hinzu.
$(year) Fügen Sie die von der year Aufnahmegruppe erfasste Zeichenfolge hinzu.

Siehe auch