2010-08-08 10 views
8

Una nuova domanda è sorto in relazione a uno earlier question of mine. Ho del codice che sta usando una regex per trovare indirizzi email. Funziona benissimo tranne che restituisce corrispondenze duplicate. Ho cercato questo sito e ho trovato una domanda molto tempo fa che trattava di un problema simile, e la risposta aveva qualcosa a che fare con il mixare la logica regex con una stringa [] e il metodo Distinct(). Sfortunatamente la mia comprensione degli array è ancora limitata.Qual è il modo preferito per filtrare una ricerca regolare di corrispondenze duplicate in C#

Il mio codice inserisce tutte le corrispondenze regex in un MatchCollection. A parte questo, come posso interagire con questo MatchCollection per aggiungere solo corrispondenze uniche alla regex?

risposta

11

È possibile farlo utilizzando Distinct in .NET 3.5 o più recente se si chiama Cast sulla vostra partita collezione in modo da poter utilizzare i metodi di estensione LINQ:

MatchCollection matchCollection = Regex.Matches(input, pattern); 
List<string> matches = matchCollection 
    .Cast<Match>() 
    .Select(m => m.Value) 
    .Distinct() 
    .ToList(); 

questo presuppone che vi siano i seguenti usings a la parte superiore del file:

using System.Linq; 
using System.Collections.Generic; 
+0

Funziona come un fascino. Grazie mille. – Stev0

Problemi correlati