1

次のコードを含む関数があります。

Text = Text.Where(c => !Char.IsDigit(c)).Aggregate<char, string>(null, (current, c) => current + c);

しかし、それはかなり遅いです。とにかく私はそれをスピードアップすることができますか?

4

4 に答える 4

8

この正規表現を試してください:

Text = Regex.Replace(Text, @"\d+", "");

\d+\d複数の連続する数字を一度に削除するという理由だけでなく、より効率的です。

于 2013-01-19T15:00:36.927 に答える
3

はい、使用できますRegex.Replace

Text = Regex.Replace(Text, "\\d", "");

正規表現は 1 桁の数字に一致します。Regex.Replaceは、文字列内でそれが出現するたびにText空の文字列に置き換えます""

于 2013-01-19T15:00:38.690 に答える
2

これらの連結はすべて、おそらくあなたを殺しています。最も簡単な/最良の方法は、おそらく正規表現です。

Text = Regex.Replace(Text, "\\d", "");

または、新しい文字列インスタンスを 1 つだけ作成してみることができます。

Text = new string(Text.Where(c => !Char.IsDigit(c)).ToArray())
于 2013-01-19T15:02:18.580 に答える
1

で試してくださいRegex.Replace

指定された入力文字列で、正規表現パターンに一致する文字列を指定された置換文字列に置き換えます。

Regex.Replace(Text, "\\d+", "");

ここに がありDEMOます。

于 2013-01-19T15:01:25.683 に答える