それは十分に簡単に思えますよね?まあ、私は知りません。
私が試しているコードは次のとおりです。
input = Regex.Replace(input, "\\", "\\\\\\");
ただし、エラーが発生します。
ArgumentException が処理されませんでした - "\" を解析中 - パターンの末尾にある \ が無効です。
どうすればいいですか?
"\\\\"
最初のものはではなく であるべき"\\"
です。それはこのように動作します:
"\\"
た。\
ます。正規表現では、「逐語的な文字列」を使用する方がはるかに簡単です。この場合、逐語的な文字列は@"\\"
. 逐語的な文字列を使用する場合、バックスラッシュは文字どおりに処理されるため、正規表現エンジンのエスケープのみを考慮する必要があります。@"\\"
正規表現エンジンによって解釈されないため、2 番目の文字列も になります。
1つの円記号を2つの円記号に置き換えたい場合は@"..."
、文字列リテラル(逐語的文字列とも呼ばれます)の形式として使用することにより、正規表現での1レベルのエスケープを排除する方が明確な場合があります。そうすれば、それを確認するのが簡単になります
string output = Regex.Replace(input, @"\\", @"\\");
からの置換\
です\\
。
私はあなたを助けるには遅すぎることを知っています. 多分他の誰かがこれから恩恵を受けるでしょう. とにかくこれは私のために働いた:
text = text.Replace(@"\",@"\\");
そして、私はそれがさらに簡単だと思います。
乾杯!
var result = Regex.Replace(@"afd\tas\asfd\", @"\\", @"\\");
最初のパラメータは文字列 \\ で、正規表現では \ です。
2番目のパラメータは正規表現で処理されないため、置換時にそのまま配置されます。
後で正規表現パターンで入力を使用する場合は、Regex.Encode を使用することをお勧めします。
input = Regex.Escape(input);