2009-11-01 84 views

回答

80

嘗試以下方法:

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

\d標識符簡單地匹配任何數字字符。

+0

感謝您的幫助 – Gold 2009-11-01 14:44:52

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

您可以使用LINQ像解決方案,而不是一個正則表達式做到這一點:

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

快速的性能測試表明,這是比使用正則表達式快五倍。

+0

我會認爲這將是另一種方式......有趣。 – SirDemon 2009-11-01 15:09:06

+0

@SirDemon:是的,LINQ通常不是最快的選擇,但正則表達式有更大的初始開銷。對於設置RegEx對象的短字符串操作需要比實際工作更長的時間。 – Guffa 2009-11-01 16:23:23

+0

@Guffa你知道這是如何縮放的嗎?可以說我應該去RegEx的50K記錄? – 2016-02-15 13:53:54