Contoh Regex: Mengubah Format Tanggal

Contoh kode berikut menggunakan metode Regex.Replace untuk menggantikan tanggal yang memiliki bentuk mm/dd/yy dengan tanggal yang memiliki bentuk dd-mm-yy.

Peringatan

Saat menggunakan System.Text.RegularExpressions untuk memproses masukan yang tidak tepercaya, berikan batas waktu. Pengguna berbahaya dapat memberikan input ke RegularExpressions, yang menyebabkan serangan Penolakan Layanan. ASP.NET API kerangka kerja Core yang menggunakan RegularExpressions batas waktu.

Contoh

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

Kode berikut menunjukkan bagaimana metode MDYToDMY dapat dipanggil dalam aplikasi.

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 {0} to {1}.", dateString, 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.

Komentar

Pola regex \b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b ditafsirkan seperti yang ditunjukkan pada tabel berikut.

Pola Deskripsi
\b Memulai pencocokan dalam batas kata.
(?<month>\d{1,2}) Cocokkan satu atau dua digit desimal. Ini adalah grup month yang diambil.
/ Cocokkan tanda garis miring.
(?<day>\d{1,2}) Cocokkan satu atau dua digit desimal. Ini adalah grup day yang diambil.
/ Cocokkan tanda garis miring.
(?<year>\d{2,4}) Cocokkan dari dua hingga empat digit desimal. Ini adalah grup year yang diambil.
\b Mengakhiri pencocokan dalam batas kata.

Pola ${day}-${month}-${year} menentukan string pengganti seperti yang ditunjukkan dalam tabel berikut.

Pola Deskripsi
$(day) Tambahkan string yang diambil oleh day grup pengambilan.
- Tambahkan tanda hubung.
$(month) Tambahkan string yang diambil oleh month grup pengambilan.
- Tambahkan tanda hubung.
$(year) Tambahkan string yang diambil oleh year grup pengambilan.

Lihat juga