2009-11-01 30 views

risposta

80

provare quanto segue:

var output = Regex.Replace(input, @"[\d-]", string.Empty); 

L'identificatore \d corrisponde semplicemente qualsiasi carattere cifre.

+0

grazie per l'aiuto – Gold

3
var result = Regex.Replace("123- abcd33", @"[0-9\-]", string.Empty); 
10

È possibile farlo con un LINQ come soluzione invece di un'espressione regolare:

string input = "123- abcd33"; 
string chars = new String(input.Where(c => c != '-' && (c < '0' || c > '9')).ToArray()); 

Un test delle prestazioni rapido mostra che questo è circa cinque volte più veloce rispetto all'utilizzo di un'espressione regolare.

+0

Avrei pensato che sarebbe stato il contrario .... interessante. – SirDemon

+0

@SirDemon: Sì, LINQ di solito non è l'opzione più veloce, ma le espressioni regolari hanno un sovraccarico iniziale più elevato. Per le operazioni su stringhe brevi, l'impostazione dell'oggetto RegEx richiede più tempo del lavoro effettivo. – Guffa

+0

@ Guffa Sai come si scala? Diciamo che sui dischi 50k dovrei andare per RegEx? –

Problemi correlati