在C#中的string中用“\”replace“\\”

我仍然没有得到如何做到这一点。 我看到很多关于这个的post,但没有一个解决scheme为我工作。

我有一个名为“a \\ b”的string。 我需要的结果是“a \ b”。 这是怎么做的?

我有一个文本文件,它有一个数据库连接string,指向一个名为 – Server \ DbInstance的实例

我的目标是在文本文件中进行stringreplace – 将“Server \ DbInstance”replace为另一个值,例如“10.11.12.13,1200”。

所以我有:

stringToBeReplaced = @"Server\DbInstance"; newString = @"10.11.12.13, 1200"; 

这是问题的起点。 我的stringToBeReplaced将始终是“Server \\ DbInstance”,当我在我的文本文件中search此string时,search失败,因为文本文件没有string“Server \\ DbInstance”; 而只有“Server \ DbInstance”。 那么如何将“Server \\ DbInstance”更改为“Server \ DbInstance”?

我怀疑你的string已经实际上只包含一个反斜杠,但是你正在debugging器中查看它,它正在为你转换成一个在C#中作为常规string文本有效的forms。

如果在控制台或消息框中打印,是否显示两个反斜杠或一个?

如果你真的想用一个双反斜杠代替,那么很容易:

 text = text.Replace(@"\\", @"\"); 

…但我的猜测是,原来不包含双反斜杠。 如果这没有帮助,请给出更多的细节。

编辑:为了响应编辑的问题,你的stringToBeReplaced只有一个反斜杠英寸真的。 无论你在哪里看到两个反斜杠,那个观众都在逃避它。 string本身没有两个反斜杠。 检查stringToBeReplaced.Length并计数字符。

我试过你的post的程序,但没有成功。

这是我从debugging器得到的: 在这里输入图像描述

我保存到sqlite数据库的原始string是b\r\na 。当我读它们时,我得到b\\r\\na (debugging器中的长度是6: "b" "\" "\r" "\" "\n" "a" )然后我尝试replace这个string,然后再次获得长度为6的string(您可以在上面的图片中看到)。

我只用一个文本框在我的testing表单中运行这个简短的脚本:

 private void Form_Load(object sender, EventArgs e) { string x = "b\\r\\na"; string y = x.Replace(@"\\", @"\"); this.textBox.Text = y + "\r\n\r\nLength: " + y.Length.ToString(); } 

我在文本框中得到这个(所以,“b”和“a”之间没有新的行字符:

 b\r\na Length: 6 

我可以用这个string来做unescape反斜杠吗? (我期望在“b”和“a”之间有新的界限。)

解:

好的,这是不可能的与标准的replace,因为\r\n是一个字符。 可以用字符replace部分string,但不能replace一个字符的“半部分”。 所以,我必须单独replace任何特殊的字符,像这样:

 private void Form_Load(object sender, EventArgs e) { ... string z = x.Replace(@"\r\n", Environment.NewLine); ... 

这对我来说产生了正确的结果:

 b a 

尝试 –

 var newstring = @"a\\b".Replace(@"\\",@"\"); 
 string a = @"a\\b"; a = a.Replace(@"\\",@"\"); 

应该工作。 请记住,在手表Visual STudio显示“\”转义,所以你看到“\”代替一个单一的。

你可以简单地在你的string中进行replace

 Str.Replace(@"\\",@"\"); 

直到我阅读Jon Skeet关于debugging器显示带有双反斜杠的单个反斜杠的答案之前,我遇到了同样的问题,即使该string可能只有一个反斜杠。 我没有意识到这一点。 所以我改了我的代码

 text2 = text1.Replace(@"\\", @"/"); 

 text2 = text1.Replace(@"\", @"/"); 

并解决了这个问题。 注意:我正在连接和R.Net,它在pathstring中使用单个正斜杠。

我不知道你是如何编写代码的,但应该是这样的

 string yourVar = "a\\b"; yourVar = yourVar.Replace("\\","\");