2014-01-07 15 views
6

私はこのVB.NETプログラムに取り組んでおり、これを行うには.replace()を使ってみましたが、これを行うには最良の方法ではありません。私は、私が欲しくないデータの間に複数の空白を持つ文字列を持っていますが、文字列からスペースを取り除く最善の方法は何でしょうか?複数のスペースを1つだけに置き換える?

答えて

12

は、複数のスペースにマッチし、単一のスペースに置き換える正規表現を使用します。

s = Regex.Replace(s, " {2,}", " ") 
+0

ニート

は、この開始文字列を考えます!それは完璧に動作し、私はちょうど他のスレッドで見つかった他のすべてのコードは、私が望んでいない、本当に大きくてかさばるようになる、これは完全に動作し、重複して申し訳ありません! – bloodless2010

+0

@ Guffa、あなたが使ったパターンを説明してください。 – MansoorShaikh

+0

@MansoorShaikh:スペースの後ろに数量子 '{2、}'が続きますので、スペースにマッチし、2回以上繰り返します。 – Guffa

5

ここでは、正規表現を避けるために好む場合には、アレイを用いた方法です。

Dim str As String = "This is a test  string" 

あなたがこれを行うことができます:あなたはまた、1行にそれを組み合わせることができます

Dim arr As String() = str.Split({" "c}, StringSplitOptions.RemoveEmptyEntries) 
Dim compressedSpaces As String = String.Join(" ", arr) 

Dim newString As String = String.Join(" ", str.Split({" "c}, 
    StringSplitOptions.RemoveEmptyEntries)) 
+0

@TimSchmelterが答えた答えから、RegExオプションはより高速です。 Jon Skeet氏によると、このアプローチは、ソース文字列の長さに応じて、ガベージコレクタに多大な労力をかけます。 –

+0

RegExは私の経験ではめったに高速です。速度が重要な場合は、負荷がかかっているかどうかを確認するのがベストです。デバッグ/保守性の問題のため、IMO Regexは避けるべきです。 – rheitzman

+0

この場合、RegExソリューションは高速です。ここでの議論を参照してください:http://stackoverflow.com/a/1280227/645511私はそれが非常にあなたが欲しいものの詳細に応じて、非常に近いことに注意する必要があります。 –

関連する問題