2017-01-16 170 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」。

我已經看到了替換/用\的答案,並且工作正常,當我嘗試將/返回到相同的事情時(testResult4)。

在此先感謝。

+3

您的標題討論替換反斜槓,但所有您的示例代碼正在替換正斜槓。你實際上對哪些感興趣?你確定你正在查看字符串的實際內容,而不僅僅是調試器顯示的內容嗎?請注意,調試器會顯示一個轉義值... –

+0

我的不好,預覽沒有正確地轉義一切,我只是編輯它。 – user2320225

+1

['String.Replace'](https://msdn.microsoft.com/en-us/library/system.string.replace.aspx?f=255&MSPPError=-2147217396)與正則表達式無關,它執行簡單的字符串查找和替換。要使用正則表達式,您需要使用['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