2010-11-30 11 views
12

いくつかのC#正規表現を使用して私が浄化している恐ろしいテキストがあります。私が困惑している1つの問題は、テキストに複数の '\ r \ n'文字列があることです。実際の文字は改行ではありません。C#Regexに置き換えてください。 " r n"(改行ではなく実際の文字)

私が試してみた:

content = Regex.Replace(content, "\\r\\n", ""); 

と:

content = Regex.Replace(content, "\r\n", ""); 

のが、それらのどちらも動作します。最後に、私は使用していた:

content = content.Replace("\\r\\n", "\r\n"); 

は、プロジェクトが終了取得することではなく、正規表現でそれを行うことができない私を悩まします。ここ

+0

http://stackoverflow.com/questions/1981947/how-can-i-remove-rn-from-a-string-in-c-can-i-use-a-regex – SubniC

+3

content.Replace(@ "\ r \ n "、" \ r \ n ")が最適です。 – VVS

+1

@Jens:もちろん。私はそれが最良の選択であり、そのような些細な作業のために正規表現を使うほうがはるかに優れていると言っていました。 – VVS

答えて

20

\rおよび\nはRegexでも特別な意味を持ちますので、バックスラッシュをエスケープする必要があります。次に、これらのバックスラッシュは、うまくいくかもしれない

content = Regex.Replace(content, "\\\\r\\\\n", ""); 

または

content = Regex.Replace(content, @"\\r\\n", ""); 
+0

+1私をビートしてください:) –

-3

ワイルド推測:

var bslash = System.IO.Path.DirectorySeparatorChar.ToString(); 

content = content.Replace(bslash + "r" + bslash + "n", ""); 
5

C#で正規表現を書くときに逐語的文字列リテラル(@"example")を使用しての習慣を身に取得することをお勧めします。あなたが二回各バックスラッシュをエスケープする必要がありそうでない場合

content = Regex.Replace(content, @"\\r\\n", "\r\n"); 

:一旦正規表現のためにそれらをエスケープするために二回目のC#の文字列でそれを脱出し、この場合、あなたはこれを必要としていました。したがって、単一のバックスラッシュはの4つのバックスラッシュと標準の文字列リテラルになります。

3
content = Regex.Replace(content, "\\\\r\\\\n", ""); 

につながる、C#の文字列をエスケープする必要があります。詳細情報here

引用:リテラルC#の文字列では、だけでなく、 C++や他の多くの.NET言語で

、 バックスラッシュはエスケープ文字です。 リテラル文字列 "\\"は、単一の バックスラッシュです。正規表現では、 バックスラッシュもエスケープ文字です。 正規表現\\は、 単一のバックスラッシュに一致します。この通常の の式はC#文字列として "\\\\"になります。そうですね、 の4つのバックスラッシュが1つにマッチします。

注:私は最後の文の横に8つのバックスラッシュを書かなければならなかったので、4つのバックスラッシュは、指定した入力文字列内;-)

2

を表示になるだろう、Regex.Replaceが付き正規表現パターンに一致する文字列を置き換えます指定された置換文字列。それはあなたがやろうとしているものだよう

典型的な使い方は

string input = "This is text with far too  much " + " whitespace."; 
    string pattern = "\\s+"; 
    string replacement = " "; 
    Regex rgx = new Regex(pattern); 
    string result = rgx.Replace(input, replacement); 

は思えないことになります。

0

質問は古いですが、変更がありました。

string temp = Regex.Replace(temp, "\\n", " "); 

またはより良い十分

string temp = Regex.Replace("tab d_space newline\n content here :P", @"\s+", " "); 
//tab d_space newline content here :P 

これはあまりにもユニバーサルWindowsアプリケーションと、おそらく他の人に取り組んでいます。

0

より良い&簡単な回答はこちらです。それはRegexを使って私のために働く。

public static string GetMultilineBreak(this string content) 
{ 
    return Regex.Replace(content, @"\r\n?|\n", "<br>"); 
} 
関連する問題