2011-02-22 7 views
2

Regexのものは恐ろしいです。私はC#で正規表現を使用して、2つ以上のスペースを改行しないスペースに変換したいと考えています。私は単一のスペースだけを残したいと思う。複数の空白をC#のRegexに置き換えてください。

Sample  Sample 

Sample     Sample 

しかし

Sample Sample 

を生成するには、影響を受けることはないでしょう。

アイデア?

ありがとうございます。

答えて

7

あなたは、交換引数としてMatchEvaluatorを使用することができます。 C#3.0以降では、あなたがラムダ関数を使用することができます。

s = Regex.Replace(s, " {2,}", x => x.Value.Replace(" ", " ")); 
+0

ありがとう:-)使用MatchEvaluator機能を忘れてしまいました。私はそれが簡単だろうと思った。私はちょうどそのもので苦労している。 – Chev

+0

非常に良い1つ! – Marlon

3

ゼロ幅の正の先読みおよび見た目のアサーションに基づいています。

MSDN

var rx = new Regex(" (?=)|(?<=) "); 

var str = "ab cde f"; 
var res = rx.Replace(str, "&nbsp;"); 

// res == ab&nbsp;&nbsp;&nbsp;cde f 
+0

@マークは、代わりに私は、「シンプル」な方法でそれを望んでいたが、私は – xanatos

関連する問題