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