2009-06-01 22 views

答えて

8

は、この正規表現試しになるいくつかのケースで単語を分離する複数のスペースがある

The cow jumped over the moon 

[ ]+ 

をし、それを交換します単一のスペース。

+0

これはタブafaik – annakata

+1

の方が良い表現になります。 – Cerebrus

+0

ああ、そうです。明らかに私は「白い空間」の「白」をスキップし、単に「空間」を読みました。 – Gumbo

0

私が通常行う方法は、それ以上エントリが見つからなくなるまで、繰り返し2つのスペースを1つ置き換えます。これは、もちろん、複数のパスと、文字列の割り当てとガーベジコレクションの各ラウンドでの複数回の置換を意味しますが、オーバーヘッドが解析と正規表現の実行よりもかなり少なくなることがわかりました。 64スペースでも、修正するには7パスしかかかりません。また、典型的な文字列は2〜5スペースしか持たないので、より高速に動作します。

+0

静的な正規表現を保つことができるどんな状況下でもこれがより高速であるとは思えません。 – annakata

15
string cleanedString = Regex.Replace(input, @"\s+", " "); 
0

私はこれを常にsedで行います。

文字クラスの角かっこには、スペースとタブ文字があります。私は '+'を '\'で引用しました。これは、正規表現エンジンがリテラル "+"ではなく "1つ以上の"を意味するように "+"を取る場合には必要ではないかもしれません。

関連する問題