2009-11-01 16 views

Odpowiedz

80

Spróbuj wykonać następujące czynności:

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

Identyfikator \d prostu pasuje dowolny cyfrowy charakter.

+0

dziękuję za pomoc – Gold

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

można zrobić z LINQ podobnego rozwiązania zamiast wyrażenia regularnego:

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

Szybki test wydajności pokazuje, że jest to około pięć razy szybciej niż za pomocą wyrażenia regularnego.

+0

Pomyślałem, że to będzie na odwrót .... interesujące. – SirDemon

+0

@SirDemon: Tak, LINQ zwykle nie jest najszybszą opcją, ale wyrażenia regularne mają większy początkowy narzut. W przypadku operacji na krótkich łańcuchach ustawienie obiektu RegEx trwa dłużej niż faktyczna praca. – Guffa

+0

@Guffa Czy wiesz, jak to skaluje? Powiedzmy, że na rekordach 50k powinienem wybrać RegEx? –

Powiązane problemy