C# 在FolderDialogBox.SelectedPath中用\替换\\

C# 在FolderDialogBox.SelectedPath中用\替换\\,c#,C#,我正在我的一个应用程序中使用folderdialogbox。当一个目录被选中并分配给另一个字符串时,我会得到一个类似C:\\test 对于一些作业,我想要c:\test的值 我研究了stackoverflow,但没有找到任何有效的答案。我试过各种各样的替代品,但都不起作用 任何帮助都将不胜感激 代码: private void label1_Click(object sender, EventArgs e) { folderBrowserDialog1.ShowNewFol

我正在我的一个应用程序中使用folderdialogbox。当一个目录被选中并分配给另一个字符串时,我会得到一个类似
C:\\test

对于一些作业,我想要
c:\test
的值

我研究了stackoverflow,但没有找到任何有效的答案。我试过各种各样的替代品,但都不起作用

任何帮助都将不胜感激

代码:

private void label1_Click(object sender, EventArgs e)
    {
       folderBrowserDialog1.ShowNewFolderButton = false;

        if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
        {
            string p = @folderBrowserDialog1.SelectedPath; //=> Selected C:\ACTNT
            //removing @ in front of folderBrowserDialog1 does not change the situation
            strPathName.Text = p; // => display c:\ACNT
            con = "database = " + p; // => actual value "database = c:\\ACNT"
            UpdateTableName();
        }
    }
如果我手动键入
strPathName
作为
C:\ACNT
,程序运行正常。

要在C#字符串中指定\,请用另一个斜杠将其转义。例如string yourString=“C:\test”

如果指定“C:\test”,那么实际上是说“C:[tab character]est”。

要在C#字符串中指定\项,请使用另一个斜杠将其转义。例如string yourString=“C:\test”


如果您指定“C:\test”,那么您实际说的是“C:[tab character]est”。

Y请不要使用@example

string myvar = @"c:\myfile.txt";

你没有使用@example吗

string myvar = @"c:\myfile.txt";
试试这个代码

string path = @"C:\\test";
path=path.Replace(@"\\", @"\");
试试这个代码

string path = @"C:\\test";
path=path.Replace(@"\\", @"\");

在字符串值前面,尝试放置一个
@
。 例如:

@"c:\test".

在字符串值前面,尝试放置一个
@
。 例如:

@"c:\test".
使用其中一个

string myvar = @"c:\myfile.txt";

使用其中一个

string myvar = @"c:\myfile.txt";


到目前为止,其他答案都是关于分配字符串文本的,但听起来好像是通过GUI获得这个字符串,在这种情况下,这是不相关的

相关的是如何确定字符串实际上是
c:\\test
。我强烈怀疑您正在调试器中查看它,调试器在显示字符串时会自动应用C#转义


如果您只是将其打印到屏幕上,或者甚至逐个字符(例如调用
tocharray()
),我想您会发现它只有一个反斜杠。不要被调试器愚弄。

到目前为止,其他答案都是关于分配字符串文本的,但听起来好像你是通过GUI获得这个字符串的,在这种情况下,这是不相关的

相关的是如何确定字符串实际上是
c:\\test
。我强烈怀疑您正在调试器中查看它,调试器在显示字符串时会自动应用C#转义


如果您只是将其打印到屏幕上,或者甚至逐个字符(例如调用
tocharray()
),我想您会发现它只有一个反斜杠。不要被调试器愚弄。

请发布用于解决所面临问题的代码。从中,我们可以看到问题并帮助您。您确定您得到了
C:\\test
?我这样做是因为VS调试器在底层字符串值实际为\时显示\\。我运行了代码,删除了
UpdateTableName()
因为它不相关,所以在
con=“database=“+p;”之后添加
MessageBox.Show(con)
查看连接的结果,消息框将显示
database=c:\ACNT
。代码没有问题。如果您获得了想要的信息,请发布您用来解决所面临问题的代码,不要忘记将“应答”标记为“已接受”。从中,我们可以看到问题并帮助您。您确定您得到了
C:\\test
?我这样做是因为VS调试器在底层字符串值实际为\时显示\\。我运行了代码,删除了
UpdateTableName()
因为它不相关,所以在
con=“database=“+p;”之后添加
MessageBox.Show(con)
查看连接的结果,消息框将显示
database=c:\ACNT
。代码没有问题。如果您得到了想要的信息,请不要忘记将应答标记为已接受。我没有查看调试器。该值将添加到另一个字符串中。当系统使用此字符串时,它将失败。该字符串最初是通过GUI(filebrowserdialog)获得的。@Natwarath:那么您如何查看该字符串?也许还有别的东西在逃避它。试着一个接一个地打印出长度或字符。FileBrowserDialog不会像那样将斜杠加倍。我不会查看调试器。该值将添加到另一个字符串中。当系统使用此字符串时,它将失败。该字符串最初是通过GUI(filebrowserdialog)获得的。@Natwarath:那么您如何查看该字符串?也许还有别的东西在逃避它。试着一个接一个地打印出长度或字符。FileBrowserDialog不会像那样将斜杠加倍。