2009-11-01 22 views

答えて

80

は、以下のことを試してみてください。

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

\d識別子は、単に任意の数字の文字に一致します。

+0

助けていただきありがとうございます – Gold

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

あなたは代わりに正規表現のソリューションのようにLINQでそれを行うことができます:迅速なパフォーマンステストは、これは正規表現を使用するよりも約5倍高速であることを示している

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

+0

私はそれが他の周り.... ....興味深いと思ったでしょう。 – SirDemon

+0

@SirDemon:はい、LINQは通常最速のオプションではありませんが、正規表現の初期オーバーヘッドは大きくなります。短い文字列の操作では、RegExオブジェクトの設定は実際の作業よりも時間がかかります。 – Guffa

+0

@ Guffaあなたはこれがどのようにスケールするか知っていますか?私はRegExのために50kレコードに行くべきですか? –

関連する問題