次のコードを含む関数があります。
Text = Text.Where(c => !Char.IsDigit(c)).Aggregate<char, string>(null, (current, c) => current + c);
しかし、それはかなり遅いです。とにかく私はそれをスピードアップすることができますか?
この正規表現を試してください:
Text = Regex.Replace(Text, @"\d+", "");
\d+
\d
複数の連続する数字を一度に削除するという理由だけでなく、より効率的です。
はい、使用できますRegex.Replace
:
Text = Regex.Replace(Text, "\\d", "");
正規表現は 1 桁の数字に一致します。Regex.Replace
は、文字列内でそれが出現するたびにText
空の文字列に置き換えます""
。
これらの連結はすべて、おそらくあなたを殺しています。最も簡単な/最良の方法は、おそらく正規表現です。
Text = Regex.Replace(Text, "\\d", "");
または、新しい文字列インスタンスを 1 つだけ作成してみることができます。
Text = new string(Text.Where(c => !Char.IsDigit(c)).ToArray())
で試してくださいRegex.Replace
。
指定された入力文字列で、正規表現パターンに一致する文字列を指定された置換文字列に置き換えます。
Regex.Replace(Text, "\\d+", "");
ここに がありDEMO
ます。