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