2017-01-16 169 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