转义C#中的目录字符

时间:2012-01-11 14:41:46

标签: c# string path escaping

我需要在我拥有的字符串中转义字符,其内容为C:\\blablabla\blabla\\bla\\SQL.exeC:\blablabla\blabla\bla\SQL.exe,因此我可以基于此SQL.exe文件抛出一个进程。

我尝试使用Mystring.Replace("\\", @"\");Mystring.Replace(@"\\", @"\");,但都没有效果。

我怎么能这样做?

提前多多感谢。

已编辑:更正了字符串中的类型。

9 个答案:

答案 0 :(得分:8)

我非常强烈怀疑你在Visual Studio调试器中看到这个输入字符串,并且自欺欺人地说实际上有2 \而实际上没有。\\。这就是为什么尝试用\替换\\没有做任何事情的原因,因为在原始字符串中没有出现\。既然您在调试器中再次查看输出,那么您再次愚弄自己有2 \

Visual Studio调试器具有转义字符串的倾向。将其记录到文件或打印到控制台,您将看到输入字符串中只有一个{{1}},您无需替换任何内容。

答案 1 :(得分:4)

看起来你正在尝试用单反斜杠(@"\\")替换字符串中的双反斜杠(@"\")。如果是这样,请尝试以下

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

注意:你确定该字符串甚至包含双反斜杠吗?某些环境会将单个反斜杠打印为double(例如调试器)。你的评论提到我的方法不起作用。这是一个标志,你的字符串实际上没有双反斜杠(否则它会起作用)。

答案 2 :(得分:2)

@字符将字符串指定为逐字文字字符串,但这是在构造字符串时。如果您使用Mystring.Replace("\\", @"\"),则基本上不会替换任何内容,因为两个字符串是相同的。

如果你想要一个没有转义字符的字符串,那么要么用:

定义它
string path = @"C:\Some\Directory\And\File.txt";

或者您可以将\\替换为/,如下所示:

path = path.Replace('\\', '/');

值得注意的是,如Darin Dimitrov所述,包含两个\字符的字符串可能只是字符串的显示(即使用调试器时)而不是实际字符串的值。

答案 3 :(得分:1)

我认为OP正在询问如何在文件路径中转义\\如果在这种情况下,因为OP没有提到他试图使用它的位置。所以我猜了一下。

然后使用Path.Combine()方法获取FileName路径。

Path.Combine() Documentation

答案 4 :(得分:0)

你在哪里看这个输出?因为它可能是你期望的字符串,但通过调试器,输出窗口等查看值是逃避斜杠

答案 5 :(得分:0)

使用类似:

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

确保将Replace方法的结果分配给myStr。否则它会进入无效状态;)

答案 6 :(得分:0)

尝试在需要的地方添加“| DataDirectory | \ MyFile.xyz”。它适用于它可能与其他东西一起使用的连接字符串(我还没有真正尝试将它应用于其他东西)。

答案 7 :(得分:0)

我不明白你想要什么,如果你只想获得文件名(转义目录字符)你可以试试:

string fileName = Path.GetFileName(YourString)

答案 8 :(得分:0)

Noloman ....当你连接时你可能在连接目录时错过了一个“\”。我假设你正在尝试加入目录+一些子目录.. @noloman请记住在C#中c:\ Temp“写成这样的”c:\ Temp“或@”c:\ Temp“一个是Literal,另一个是如何用传统的编码方式表示”\“,因为”\“是一个逃脱Char和处理directorys时,我们用“\”表示所有路径和子路径 所以也许你替换“\”,你真的搞乱了你自己的预期过程

Mystring = Mystring.Replace(@"\\", @"\"); 
除非你真正有意义,否则

应该适合你 Mystring = Mystring.Replace(@“\”,“\”);如果你相信你期望用“\”来构建目录..当然它将无法工作..因为你只是在essense用反向字符替换反斜杠..我希望这使得感觉到你..

System.IO.Directory.GetCurrentDirectory();您使用的也是一个问题.. SQL Server不是运行代码的应用程序..它是您的.NET应用程序,因此您需要将SQL Server的位置放入变量app.config,web.config等...请编辑您的问题并粘贴您正在使用的代码,以执行您想要执行的操作以查看SQL Server代码..您可能希望查看“是否要执行类似Process的操作”。开始(....)表示文件名..?