2016-04-06 28 views
3

文字列があります。簡単にするためには、次のようになります。複数の文字列の置換(同じ文字列内)

\r\n\r\n\r\n 

それはまた、より多くの出現を持っている可能性が「\ rを\ n」を - 私はここに、最も単純な問題を投稿しています。私は上記の例の場合、「\ rをする\ n個ます\ r \ n」の各発生の間にスペースを挿入する必要があり

は、私は次のようになり、文字列で終わることを期待:

\r\n \r\n \r\n 

私はCAN私はstring.Replaceを使用するかを把握しようとしている問題を抱えている

string newString = "\r\n\r\n\r\n"; 
while (newString.Contains("\r\n\r\n")) 
     newString = newString.Replace("\r\n\r\n", "\r\n \r\n"); 

:この(それは期待される結果を生成するために、文字列の多くを作成しますので、私は好きではありません)次のコードを使用して操作を行います私のためにこれを行うことができる正規表現。

私はそうのようなstring.replace(あるいはStringBuilder.Replace)を使用しようとすると

...

var result = "\r\n\r\n\r\n".Replace("\r\n\r\n", "\r\n \r\n"); 

私は正規表現で置き換えることを考える

"\r\n \r\n\r\n" //There is no space between the last two carriage return/line feed 

で終わる可能性トリックを行うが、最初の置換後に\ r \ nのすべての置換を置き換えるために、正規表現エンジンに怠惰な一致をさせる方法を理解することはできない。

私はSOとGoogleの両方で同様の問題を見つけようとしていますが、何も使用していません。これは重複している場合は事前にお詫び申し上げますが、そうであれば、私はそれを見つけることができません!

要するに、私はwhileループを使用してこれを行うことができますが、より洗練されたソリューションがあるかどうかを知りたがっていますか?

EDIT

申し訳ありません - これにもう少しがある: も、このように見える文字列を検討することができる私のコードは:

5\r\n\r\nTest\r\n 

その場合には、私が見ることを期待しますこのようになります。文字列:

5\r\n \r\nTest\r\n 

だから - 私はちょうど交換したくない '\ rを\ n' は '\ rを\ n' はこのWOUなどであなたに見える文字列を教えてください:

+0

newString = newString.Replace( "\ r \ n"、 "\ r \ n").Trim();を試すことができますか。 ? –

+0

申し訳ありません - 私は私の質問の重要な部分を省略したことを認識したので、詳細を追加しました。 – Jay

答えて

4

「間」の部分だけが一致するように、先を見て後方を見ることができます。 "\ Rは\ Nの\ Rは\ Nの\ rをする\ n" であるtestもたらす

string test = "\r\n\r\n\r\n"; 
Regex reg = new Regex("(?<=\r\n)(?=\r\n)"); 
test = reg.Replace(test, " "); 

+0

この赤ちゃんを私の単体テストに差し込んだのですが、初回通過...感謝! – Jay

-1
"\r\n\r\n\r\n".Replace("\n\r", "\n \r"); 
+0

申し訳ありません - qquestionの私の編集を見てください - これは私がやろうとしていることではありません – Jay

+0

これは単純化しています。 "\ n \ r"のような文字列は、OPの要件に基づいて挿入されたスペースを取得すべきではありません。 – juharr

+0

Juharr、 "\ n \ r"は変数として使用できます。これは単なる例です。 –