2009-11-01 20 views
38

Bir dizeden tüm sayı ve işaretleri kaldırmak için Regex.Replace kullanmam gerekiyor.Regex.Replace kullanarak dize sayıları nasıl alınır?

Örnek girişi: 123- abcd33 Örnek çıktı: önceden abcd

teşekkürler.

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

\d tanımlayıcı basitçe herhangi haneli karakterle eşleşir:

+2

Ayrıca "-" kaldırılmasını mı istiyorsunuz? Bunlar sayı değil ... – jle

cevap

80

uygulamayı deneyin.

+0

thank için Yardım – Gold

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

Bunun yerine normal ifadenin çözümü gibi bir LINQ ile yapabilirsiniz:

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

hızlı bir performans testi bu yaklaşık beş kat daha hızlı normal bir ifade kullanmaktan daha olduğunu göstermektedir.

+0

Ben başka bir yolu olacağını düşündüm .... ilginç. – SirDemon

+0

@SirDemon: Evet, LINQ genellikle en hızlı seçenek değildir, ancak normal ifadeler daha büyük bir başlangıç ​​yüküne sahiptir. Kısa dizelerdeki işlemler için RegEx nesnesi gerçek çalışmadan daha uzun sürer. – Guffa

+0

@Guffa Bunun nasıl ölçeklendiğini biliyor musun? RegEx için 50k kayıtlarda gitmeliyim? –

İlgili konular