Поделиться через


Выполнение операций без учета языка и региональных параметров в пространстве имен RegularExpressions

Обновлен: Ноябрь 2007

Методы в пространстве имен System.Text.RegularExpressions используют свойство Thread.CurrentCulture для выполнения операций, определенных пользователем как выполняемые без учета регистра. В результате операции в пространстве имен RegularExpressions, не учитывающие регистр, по умолчанию будут выполняться с учетом языка и региональных параметров. Например, класс Regex предоставляет конструктор, который позволяет инициализировать новый экземпляр класса, определив параметр options. Параметр options — это побитовое логическое объединение значений перечисления RegexOptions. Перечисление RegexOptions содержит член IgnoreCase, который определяет сопоставление без учета регистра. Когда IgnoreCase передается как часть параметра options в конструктор Regex, при сопоставлении не учитывается регистр, но учитывается язык и региональные параметры.

Чтобы в методах из пространства имен RegularExpressions не учитывались язык и региональные параметры, необходимо передавать член CultureInvariant перечисления RegexOptions как часть параметра options в конструктор Regex. В следующем примере показано, как создать экземпляр класса Regex, не учитывающий регистр, а также язык и региональные параметры.

Imports System
Imports System.Globalization
Imports System.Text.RegularExpressions

Public Class CultureChange
    Public Shared Sub Main()
      ' Perform a case-insensitive, culture-insensitive
      ' Regex operation.
      Dim TestString As String = "i"
      Dim r As New Regex("I", RegexOptions.IgnoreCase Or _
                   RegexOptions.CultureInvariant)
      Dim result As Boolean = r.IsMatch(TestString)
      Console.WriteLine("The result of the comparison is: {0}", result)
   End Sub
End Class
using System;
using System.Globalization;
using System.Text.RegularExpressions;

public class CultureChange
{
   public static void Main() 
   {
      // Perform the case-insensitive, culture-insensitive 
      // Regex operation.
      String TestString = "i";
      Regex r = new Regex("I", RegexOptions.IgnoreCase | 
                RegexOptions.CultureInvariant);
      bool result = r.IsMatch(TestString);
      Console.WriteLine("The result of the comparison is: {0}",
                         result); 
   }
}

Этот код позволит удостовериться, что функция Regex.IsMatch, выполняемая без учета регистра для строк "i" и "I", вернет для свойства InvariantCulture значение true. Выходные данные кода:

The result of the match is: True

См. также

Ссылки

System.Text.RegularExpressions

Другие ресурсы

Выполнение строковых операций, не зависящих от языка и региональных параметров

Элементы языка регулярных выражений