C# 将双反斜杠(“双反斜杠”)替换为单反斜杠(“双反斜杠”)

C# 将双反斜杠(“双反斜杠”)替换为单反斜杠(“双反斜杠”),c#,string,replace,registry,backslash,C#,String,Replace,Registry,Backslash,我的程序从注册表项(GTA文件夹的路径)中检索一个值。 我正在使用以下代码检索它: private static string PathName { get { using (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(@"Software\SAMP")) { return (string)registryKey.GetValue("gta_sa_exe

我的程序从注册表项(GTA文件夹的路径)中检索一个值。 我正在使用以下代码检索它:

private static string PathName
{
    get
    {
        using (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(@"Software\SAMP"))
        {
            return (string)registryKey.GetValue("gta_sa_exe");
        }
    }
}
无论如何,它用双反斜杠检索它,我试图用以下代码替换它们:

string installdirectory = path.Replace(@"\\", @"\");

System.Diagnostics.Process.Start(installdirectory + " -c -n " + playerinfo[0] + " -h 127.0.0.1 -p 7777");`

但它保持不变,有人能帮我吗?

没有问题。例如,运行以下程序:

void Main()
{
    string s = "foo\\bar";
    Console.WriteLine(s);
}

如果在调试器中检查
s
的值,您将看到
“foo\\bar”
。但是当输出时,您将看到
“foo\bar”

如果您在调试器中查看它,它将显示双反斜杠。也就是说,字符串
“foo\bar”
将在调试器中显示为
“foo\\bar
”。当您在控制台上显示它或将它写入文件时,它是什么样子的?它保持不变,因为检索到的字符串中没有双反斜杠。你在无缘无故地担心@JimMischel解释了应该使用
Process.Start
的问题,其中参数是分开的。我怀疑这是你的问题。您正在启动一个名为“c:\installDirectory\gta_sa.exe-c-n asdf-h等”的程序,但您的程序名仅为“c:\installDirectory\gta_sa.exe”。请尝试以下操作:
Process.Start(installdirectory,“-c-n”+playerinfo[0]+”-h127.0.0.1-p7777”)