【问题标题】:string.Replace is not replacing double backslashes from my stringstring.Replace 没有替换我的字符串中的双反斜杠
【发布时间】:2018-02-12 22:42:24
【问题描述】:

我需要通过单击表单上的按钮来运行某种应用程序, 我说的是 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) 总是错误的,所以它实际上意味着我的路径不存在,即使它存在,所以我想我需要删除“\\”并用“\”替换它:)

【问题讨论】:

  • why is my path looking like that 这是您在调试器窗口中看到的内容。使用 放大镜 图标以文本形式查看内容。 stackoverflow.com/a/26379763/932418
  • @L.B 使用放大镜图标我的值看起来不错,但即使该路径 100% 存在,它也总是错误的 .. :/
  • 如果路径在设置中没有斜杠,那么它在代码中不会有斜杠。您只是在查看 C# 处理该字符的方式。路径不存在。你认为确实如此。那是你的问题。再仔细看看。按照建议使用放大镜图标抓取字符串并将其直接粘贴到资源管理器中,看看它是否打开了文件夹。
  • @Juan 这就是我测试它的方式,抓住放大镜图标显示的值并将其粘贴到资源管理器中,然后运行应用程序,而 Directory.Exist 说我的路径不存在:)
  • 请发布调试器屏幕快照和资源管理器中文件夹的快照。

标签: c# wpf string replace settings


【解决方案1】:

我想我知道问题出在哪里了。

您的路径包含一个文件名。 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.");
        }
}

【讨论】:

  • 看起来这是真的,但是如果我从路径名中提取 Word.exe,我怎么能运行例如 Word.exe 的应用程序,但是是的,你说的是真的,但不幸的是这样做了根本不解决我的问题,但投票!
  • @Roxy'Pro:这应该足以为您指明正确的方向。无论如何,我用你需要的东西更新了我的答案。再读一遍。
猜你喜欢
  • 1970-01-01
  • 2016-08-30
  • 1970-01-01
  • 2021-09-02
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
相关资源
最近更新 更多