Contoh Ekspresi Reguler: Mengubah Format Tanggal

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

Peringatan

Penggunaan System.Text.RegularExpressions tidak terbatas dengan input yang tidak tepercaya dapat membuat aplikasi tunduk pada serangan penolakan layanan. Lihat Praktik terbaik untuk ekspresi reguler dalam .NET untuk panduan tentang cara menggunakan ekspresi reguler .NET dengan aman dengan input yang tidak tepercaya.

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 {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.

Komentar

Pola ekspresi reguler \b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b ditafsirkan seperti yang diperlihatkan dalam tabel berikut.

Pola Deskripsi
\b Mulai pencocokan pada batas kata.
(?<month>\d{1,2}) Cocokkan satu atau dua digit desimal. Ini adalah grup yang ditangkap month.
/ Cocokkan tanda garis miring.
(?<day>\d{1,2}) Cocokkan satu atau dua digit desimal. Ini adalah grup yang ditangkap day.
/ Cocokkan tanda garis miring.
(?<year>\d{2,4}) Sesuaikan dua hingga empat digit desimal. Ini adalah grup yang ditangkap year.
\b Akhiri pertandingan pada batas kata.

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

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

Lihat juga