Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 替换不是替换字符串中的双反斜杠_C#_Wpf_String_Replace_Settings - Fatal编程技术网

C# 替换不是替换字符串中的双反斜杠

C# 替换不是替换字符串中的双反斜杠,c#,wpf,string,replace,settings,C#,Wpf,String,Replace,Settings,我需要通过点击表单上的按钮来运行某种应用程序, 我正在谈论WPF桌面应用程序,以及C#作为一种编程语言,今天我遇到了一个问题,我试图在我的按键下运行某种应用程序,但我使用调试器意识到我的路径是这样写的:(我正在我的Settings.setting文件中保留路径,在那里我没有使用双反斜杠,这是我的第一个问题,为什么我的路径看起来像这样,如下所述) C:\\MyComputer\\MyApplication\\Application.exe 我需要用一个反斜杠来写,我试着做的是贴在下面: priv

我需要通过点击表单上的按钮来运行某种应用程序, 我正在谈论WPF桌面应用程序,以及C#作为一种编程语言,今天我遇到了一个问题,我试图在我的按键下运行某种应用程序,但我使用调试器意识到我的路径是这样写的:(我正在我的Settings.setting文件中保留路径,在那里我没有使用双反斜杠,这是我的第一个问题,为什么我的路径看起来像这样,如下所述

C:\\MyComputer\\MyApplication\\Application.exe

我需要用一个反斜杠来写,我试着做的是贴在下面:

 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),但是的,您所说的是真的,但不幸的是,我根本没有解决我的问题,而是投了赞成票@罗克西:这应该足以为你指明正确的方向。不管怎样,我用你需要的更新了我的答案。再读一读。