string.Replace不会替换我的字符串中的双反斜杠

问题描述:

我需要通过点击我的表单上的按钮来运行某种应用程序, 我在谈论WPF桌面应用程序,以及关于C#作为编程语言,以及今天我遇到了一个问题,我尝试在按钮键上运行某种应用程序,但是我用调试器意识到我的路径是这样写的:(我在我的Settings.setting文件中保留路径,并且我没有使用双反斜线那是我第一次quuestion,为什么我的下面提到的路径看起来就像是,string.Replace不会替换我的字符串中的双反斜杠

C:\\ \\我的电脑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)是八方通假的,所以它acctually意味着我的路径不存在,即使存在,所以我想我需要删除“\\”并将其替换为“\”:)

+2

'为什么我的路径看起来像that'什么是你在调试器窗口中看到。使用*放大镜*图标将内容看作文本。 https://*.com/a/26379763/932418 –

+0

@LB使用放大镜图标我的值看起来不错,但即使该路径存在100%,它仍然是false。:/ –

+0

如果路径在设置中不存在斜杠,那么代码中就不会有斜线。你只是在看C#处理那个角色的方式。路径不存在。你认为它的确如此。那是你的问题。再看一看。按照建议使用放大镜图标抓住字符串,并直接将其粘贴到资源管理器中,看它是否打开文件夹。 – JuanR

我想我知道问题是什么。

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

看起来像是这样,但是如果我从路径名中提取Word.exe,我怎么能运行一个应用程序,例如Word.exe,但是这是你说的是真的,但是不幸的是我根本没有解决我的问题,但投票! –

+0

@ Roxy'Pro:这应该足以让你指向正确的方向。无论如何,我用你所需要的更新了我的答案。再读一遍。 – JuanR