2016-11-16 16 views
-1

这可能看起来像是一个已被多次解答的问题。我的团队和我在过去的一个小时内尝试了许多解决方案,但没有任何运气我们有一个包含c:\ test的数据库驱动的字符串值,我们想用\\代替反斜杠,产生c:\\test替换数据库驱动字符串中的单个反斜杠

我们已经尝试使用.Replace,Regex.Replace,.Split和重建字符串,我尝试使用for循环和子字符串来检查每个字符。当你通过冒号时,下一个字符显示为“\ t”。

请在提交之前尝试解决方案,因为我们已经尝试了很多不同的方法,其中包括堆栈溢出中的几十个建议。

如果我们手动将字符串设置为类似于path = @“c:\ test”的字符串,那么使用replace可以正常工作。

我认为解决的办法是创建一个不处理转义字符的字符串,但我不知道如何实现该字符串。

+0

有你尝试过“C:\\测试”? –

+0

万一这种怪事发生在别人身上。这只是因为使用了“C:\ temp”的路径而发生的。如果我们将字符串默认为“c:\ logs”,那么我们将被赋予无效的转义,但由于\ t是阿列克谢提及的选项卡,因此它接受字符串为有效,但指向“c: emp”。 – CubeRoot

回答

0

听起来像是你的字符串已经包含了“标签”字符('\t')可能需要使用"\\t"来替代它:

var result = "c:\test".Replace("\t", "\\t"); 
+0

我注意到,如果我使用来自控制台应用程序的参数设置值,它会自动转义字符串。你是对的,\ t被视为一个标签。我有点困惑,它正在像这样填充,而不是被转换成逃脱的反斜杠。如果您尝试将c:\ temp更改为c:\路径,则该字符串将引发\ p不是有效转义的错误。 – CubeRoot

相关问题