Aracılığıyla paylaş


Normal İfade Örneği: Tarih Biçimlerini Değiştirme

Aşağıdaki kod örneği, mm dd yy biçimindeki tarihleri gg/mm/yy biçimindeki-- tarihlerle değiştirmek için yöntemini kullanır.Regex.Replace

Uyarı

Güvenilmeyen girişi işlemek için kullanırken System.Text.RegularExpressions bir zaman aşımı geçirin. Kötü amaçlı bir kullanıcı için giriş RegularExpressionssağlayabilir ve bu da Hizmet Reddi saldırısına neden olabilir. ASP.NET Zaman aşımı kullanan RegularExpressions Core framework API'leri.

Örnek

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

Aşağıdaki kod, yöntemin MDYToDMY bir uygulamada nasıl çağrılabileceğini gösterir.

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.

Açıklamalar

Normal ifade düzeni \b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b aşağıdaki tabloda gösterildiği gibi yorumlanır.

Desen Açıklama
\b Bir sözcük sınırında eşleşmeye başla.
(?<month>\d{1,2}) Bir veya iki ondalık basamağı eşleştirin. Yakalanan grup budur month .
/ Eğik çizgi işaretiyle eşleş.
(?<day>\d{1,2}) Bir veya iki ondalık basamağı eşleştirin. Yakalanan grup budur day .
/ Eğik çizgi işaretiyle eşleş.
(?<year>\d{2,4}) İki ile dört ondalık basamağı eşleştirin. Yakalanan grup budur year .
\b Eşlemeyi bir sözcük sınırında sonlandır.

Desen ${day}-${month}-${year} , aşağıdaki tabloda gösterildiği gibi değiştirme dizesini tanımlar.

Desen Açıklama
$(day) Yakalama grubu tarafından yakalanan dizeyi day ekleyin.
- Kısa çizgi ekleyin.
$(month) Yakalama grubu tarafından yakalanan dizeyi month ekleyin.
- Kısa çizgi ekleyin.
$(year) Yakalama grubu tarafından yakalanan dizeyi year ekleyin.

Ayrıca bkz.