C# 替换不是替换字符串中的双反斜杠
我需要通过点击表单上的按钮来运行某种应用程序, 我正在谈论WPF桌面应用程序,以及C#作为一种编程语言,今天我遇到了一个问题,我试图在我的按键下运行某种应用程序,但我使用调试器意识到我的路径是这样写的:(我正在我的Settings.setting文件中保留路径,在那里我没有使用双反斜杠,这是我的第一个问题,为什么我的路径看起来像这样,如下所述) C:\\MyComputer\\MyApplication\\Application.exe 我需要用一个反斜杠来写,我试着做的是贴在下面:C# 替换不是替换字符串中的双反斜杠,c#,wpf,string,replace,settings,C#,Wpf,String,Replace,Settings,我需要通过点击表单上的按钮来运行某种应用程序, 我正在谈论WPF桌面应用程序,以及C#作为一种编程语言,今天我遇到了一个问题,我试图在我的按键下运行某种应用程序,但我使用调试器意识到我的路径是这样写的:(我正在我的Settings.setting文件中保留路径,在那里我没有使用双反斜杠,这是我的第一个问题,为什么我的路径看起来像这样,如下所述) C:\\MyComputer\\MyApplication\\Application.exe 我需要用一个反斜杠来写,我试着做的是贴在下面: priv
private void OpenApplication_Click(object sender, MouseButtonEventArgs e)
{
string path = Globals.MyApplicationPath;
string path2 = path.Replace(@"\\", @"\");
//path2 is still dobule backshashed :(
if (Directory.Exists(path2))
{
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = Globals.MyApplicationPath;
Process.Start(start);
}
else
{
MessageBox.Show("Path is not correct.");
}
}
我意识到
Directory.Exists(path2)
总是错误的,所以它实际上意味着我的路径不存在,即使它存在,所以我想我需要删除“\\”并用“\”替换它:)我想我知道问题出在哪里了
您的路径包含一个文件名。Directory.Exists()
方法将返回false,因为这不是有效的目录名
如果要查找目录,请删除文件名,然后选中:
var path2 = Path.GetDirectoryName(path);
var exists = Directory.Exists(path2) //This should be true
如果您想了解该文件是否存在,请使用:
File.Exists(path)
因此,您的代码变成:
private void OpenApplication_Click(object sender, MouseButtonEventArgs e)
{
if (File.Exists(Globals.MyApplicationPath))
{
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = Globals.MyApplicationPath;
Process.Start(start);
}
else
{
MessageBox.Show("Path is not correct.");
}
}
为什么我的路径看起来像这样
这是您在调试器窗口中看到的。使用放大镜图标以文本形式查看内容@L.B使用放大镜图标“我的值”看起来不错,但即使该路径100%存在,它始终是错误的:/如果路径在设置中没有斜杠,那么它在代码中就不会有斜杠。你只是在看C#处理这个角色的方式。路径不存在。你认为是的。这是你的问题。再仔细看看。使用建议的放大镜图标抓取字符串并直接粘贴到资源管理器中,查看它是否打开文件夹。@Juan这就是我测试它的方式,抓取放大镜图标显示的值并粘贴到资源管理器中,然后运行应用程序,而Directory.Exist表示我的路径不存在:)请在Explorer中发布调试器屏幕的快照和文件夹的快照。看起来这是真的,但如果我从路径名提取Word.exe,我如何运行应用程序(例如Word.exe),但是的,您所说的是真的,但不幸的是,我根本没有解决我的问题,而是投了赞成票@罗克西:这应该足以为你指明正确的方向。不管怎样,我用你需要的更新了我的答案。再读一读。