2017-01-16 17 views
1

正規表現マッチのために "/"を含む文字列を "\ /"に変更しようとしています。""をC#の " /"に置き換えてください

これは私がこれまで試したものです:

var test = "test/txt"; 
var testResult = test.Replace("/", @"\/"); 
var testResult2 = test.Replace("/", "\\/"); 
var testResult3 = @test.Replace("/", "\\/"); 
var testResult4 = test.Replace("/",@"\").Replace(@"\","\\/"); 
var testResult5 = test.Replace("/", @"\/").Replace("\\\\", "\\"); 

彼らはすべてのリターン "テスト\\/TXT"、私が欲しい "テスト\/TXT"。

私は/と\を置き換える答えを見たことがありますが、これはうまく動作します。同じことに/ backを入れようとすると(testResult4)起こります。

ありがとうございます。

+3

あなたのタイトルはバックスラッシュの置き換えに関する話ですが、すべてのサンプルコードはスラッシュを置き換えています。あなたは実際にどちらに興味がありますか?デバッガが示すものではなく、文字列の実際の内容を確認していることは確かですか?デバッガはあなたにエスケープされた値を表示することに注意してください。 –

+0

私の悪い、プレビューはすべて正しくエスケープされていない、私はそれを編集しました。 – user2320225

+1

['String.Replace'](https://msdn.microsoft.com/en-us/library/system.string.replace.aspx?f=255&MSPPError=-2147217396)は正規表現とは関係がありません。単純な文字列を見つけて置き換えます。 regexesを使うには、['Regex.Replace'](https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.replace(v = vs.110).aspx)を使う必要があります。 。 – Richard

答えて

0

このコードは正常に動作します:

var testResult = test.Replace("/", @"\/"); 

しかし、あなたがデバッグモードでtestResultを見たときにそれが"test\\/txt"を示しています。

印刷testResultは、コンソールまたはデバッグと、あなたが期待する結果が表示されますする:それは記号をエスケープですので、デバッグで

Debug.WriteLine(testResult); 

または

Console.WriteLine(testResult); 

あなたは二重の\を取得します。だから、あなたがtest\\/txtを得るのを見てくださいが、それはあなたが期待する結果です - test\/txt

+0

ええと、デバッガを見ていました。ありがとう、私は数分で受け入れるよ – user2320225

関連する問題