Condividi tramite


Esecuzione di operazioni indipendenti dalla lingua nello spazio dei nomi RegularExpressions

Aggiornamento: novembre 2007

Nei metodi dello spazio dei nomi System.Text.RegularExpressions viene utilizzata la proprietà Thread.CurrentCulture per eseguire operazioni specificate come senza distinzione tra maiuscole e minuscole. Di conseguenza, per impostazione predefinita, le operazioni senza distinzione tra maiuscole e minuscole nello spazio dei nomi RegularExpressions risultano dipendenti dalle impostazioni cultura. La classe Regex, ad esempio, fornisce un costruttore che consente di inizializzare una nuova istanza specificando un parametro options. Il parametro options rappresenta una combinazione OR bit per bit di valori dell'enumerazione RegexOptions. L'enumerazione RegexOptions contiene un membro IgnoreCase che specifica una corrispondenza senza distinzione tra maiuscole e minuscole. Quando IgnoreCase viene passato al costruttore Regex nell'ambito del parametro options, la corrispondenza risulterà senza distinzione tra maiuscole e minuscole e dipendente dalle impostazioni cultura.

Per ottenere un comportamento indipendente dalle impostazioni cultura da metodi dello spazio dei nomi RegularExpressions, è necessario passare il membro CultureInvariant dell'enumerazione RegexOptions al costruttore Regex nell'ambito del parametro options. Nell'esempio riportato di seguito viene illustrata la creazione di un Regex senza distinzione tra maiuscole e minuscole e indipendente dalle impostazioni cultura.

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); 
   }
}

Con questo codice si ottiene l'output riportato di seguito, che consente di verificare la restituzione di true per InvariantCulture da parte di un Regex.IsMatch senza distinzione tra maiuscole e minuscole delle stringhe "i" e "I".

The result of the match is: True

Vedere anche

Riferimenti

System.Text.RegularExpressions

Altre risorse

Esecuzione di operazioni sulle stringhe indipendenti dalla lingua

Elementi del linguaggio di espressioni regolari