Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Regex.Split (String, String, RegexOptions)

 

Data di pubblicazione: ottobre 2016

Suddivide una stringa di input in una matrice di sottostringhe in corrispondenza delle posizioni definite da un criterio di espressione regolare specificato. Le opzioni specificate modificano l'operazione di corrispondenza.

Spazio dei nomi:   System.Text.RegularExpressions
Assembly:  System (in System.dll)

public static string[] Split(
	string input,
	string pattern,
	RegexOptions options
)

Parametri

input
Type: System.String

Stringa da suddividere.

pattern
Type: System.String

Criterio di espressione regolare di cui trovare la corrispondenza.

options
Type: System.Text.RegularExpressions.RegexOptions

Combinazione bit per bit dei valori di enumerazione che forniscono le opzioni per la corrispondenza.

Valore restituito

Type: System.String[]

Matrice di stringhe.

Exception Condition
ArgumentException

Si è verificato un errore di analisi dell'espressione regolare.

ArgumentNullException

input o pattern è null.

ArgumentOutOfRangeException

options non è una combinazione bit per bit valida di valori di RegexOptions.

RegexMatchTimeoutException

Si è verificato un timeout. Per altre informazioni sui timeout, vedere la sezione Osservazioni.

Il Regex.Split sono simili ai metodi di String.Split(Char[]) (metodo), con la differenza che Regex.Split suddivide la stringa delimitatore determinato da un'espressione regolare anziché un set di caratteri. La stringa è suddiviso il numero di volte possibile. Se non viene trovato alcun delimitatore, il valore restituito contiene un elemento il cui valore è l'originale input stringa.

Il pattern parametro consiste di elementi di linguaggio di espressioni regolari che descrivono la stringa da confrontare. Per ulteriori informazioni sulle espressioni regolari, vedere Espressioni regolari di .NET Framework e Linguaggio di espressioni regolari - Riferimento rapido.

System_CAPS_importantImportante

Le espressioni regolari usate nelle chiamate a static compilate Split metodi vengono automaticamente memorizzate nella cache. Per gestire la durata delle espressioni regolari compilate, utilizzare l'istanza Split metodi.

Se più corrispondenze sono adiacenti, una stringa vuota viene inserita nella matrice. Ad esempio, suddivisione di una stringa in un singolo trattino, la matrice restituita da includere una stringa vuota nella posizione in cui sono disponibili due trattini adiacenti.

Se viene trovata una corrispondenza all'inizio o alla fine della stringa di input, viene inclusa all'inizio o alla fine della matrice restituita una stringa vuota. Nell'esempio seguente utilizza il modello di espressione regolare [a-z]+ per suddividere una stringa di input su qualsiasi carattere alfabetico maiuscolo o minuscolo. Poiché la stringa inizia e finisce con i corrispondenti caratteri alfabetici, il valore dell'elemento e il cognome della matrice restituita è String.Empty.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = "[a-z]+";
      string input = "Abc1234Def5678Ghi9012Jklm";
      string[] result = Regex.Split(input, pattern, 
                                    RegexOptions.IgnoreCase);
      for (int ctr = 0; ctr < result.Length; ctr++) {
         Console.Write("'{0}'", result[ctr]);
         if (ctr < result.Length - 1) 
            Console.Write(", ");
      }
      Console.WriteLine();
   }
}
// The example displays the following output:
//       '', '1234', '5678', '9012', ''

Se vengono utilizzate le parentesi di cattura un Regex.Split espressione, qualsiasi testo acquisito viene incluso nella matrice di stringhe risultante. Ad esempio, se si divide la stringa "Lilla carico-pear" con un trattino all'interno di parentesi di cattura, la matrice restituita include un elemento di stringa che contiene il segno meno.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = "plum-pear";
      string pattern = "(-)";

      string[] substrings = Regex.Split(input, pattern);    // Split on hyphens
      foreach (string match in substrings)
      {
         Console.WriteLine("'{0}'", match);
      }
   }
}
// The example displays the following output:
//    'plum'
//    '-'
//    'pear'      

Tuttavia, quando il criterio di espressione regolare include più set di parentesi di cattura, il comportamento di questo metodo dipende dalla versione di .NET Framework. In .NET Framework 1.0 e 1.1, se non viene trovata una corrispondenza all'interno del primo set di parentesi di cattura, il testo acquisito dalle parentesi di cattura aggiuntive non incluse nella matrice restituita. A partire da .NET Framework 2.0, tutto il testo acquisito viene inoltre aggiunto alla matrice restituita. Ad esempio, il codice seguente vengono utilizzati due insiemi di parentesi di cattura per estrarre gli elementi di una data, inclusi i delimitatori di data, da una stringa di Data. Il primo set di parentesi di cattura acquisisce il trattino e il secondo insieme acquisisce la barra rovesciata. Se il codice di esempio viene compilato ed eseguito in .NET Framework 1.0 o 1.1, esclude i caratteri barra; Se viene compilato ed eseguito con il .NET Framework 2.0 o versioni successive, li include.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = @"07/14/2007";   
      string pattern = @"(-)|(/)";

      foreach (string result in Regex.Split(input, pattern)) 
      {
         Console.WriteLine("'{0}'", result);
      }
   }
}
// In .NET 1.0 and 1.1, the method returns an array of
// 3 elements, as follows:
//    '07'
//    '14'
//    '2007'
//
// In .NET 2.0 and later, the method returns an array of
// 5 elements, as follows:
//    '07'
//    '/'
//    '14'
//    '/'
//    '2007' 

Se l'espressione regolare può corrispondere a una stringa vuota, Split dividerà la stringa in una matrice di stringhe di caratteri a singolo, in quanto il delimitatore di stringa vuota è reperibile in ogni posizione.

Il RegexMatchTimeoutException eccezione viene generata se il tempo di esecuzione dell'operazione di divisione supera l'intervallo di timeout specificato per il dominio dell'applicazione in cui viene chiamato il metodo. Se il timeout non viene definito nelle proprietà del dominio applicazione o se il valore di timeout è Regex.InfiniteMatchTimeout, viene generata alcuna eccezione.

Note per i chiamanti:

Questo metodo scade dopo un intervallo uguale al valore di timeout predefinito del dominio dell'applicazione in cui viene chiamato il metodo. Se non è stato definito un valore di timeout per il dominio applicazione, il valore InfiniteMatchTimeout, timeout, che impedisce il metodo viene utilizzato. Il metodo statico consigliato per suddividere il testo in un criterio di ricerca è Regex.Split(String, String, RegexOptions, TimeSpan), che consente di impostare l'intervallo di timeout.

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: