2011-12-13 31 views
1

我在我的應用程序中使用了folderdialogbox。當選擇一個目錄並將其分配給另一個字符串時,我會得到一個值,如C:\\test將\替換爲 FolderDialogBox.SelectedPath中的

對於某些分配,我希望得到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手動鍵入,程序運行良好。

+0

請發佈您用於解決您面臨的問題的代碼。從它,我們可以看到問題並幫助你。 – OnesimusUnbound

+1

你確定你正在獲得'C:\\ test'嗎?我問,因爲VS調試器顯示\\當底層字符串值實際上\。 –

+0

我運行代碼,刪除'UpdateTableName();',因爲它不相關,在'con =「database =」+ p;'後面加'MessageBox.Show(con)'看連接的結果,消息框會顯示'database = c:\ ACNT'。代碼沒有問題。 – OnesimusUnbound

回答

3

其他的答案至今都在談論分配字符串常量,但它聽起來像你越來越這個字符串通過一個GUI,無論如何,這是不相關的。

什麼相關的是你如何確定字符串實際上是c:\\test。我強烈地懷疑你正在調試器中查看它 - 它會在顯示字符串時自動應用C#轉義。

如果您只是將其打印到屏幕上,或者甚至是逐個字符地示例(例如調用ToCharArray()),我想您會發現它只有一個反斜槓。不要被調試器愚弄。

+0

我沒有看調試器。該值被添加到另一個字符串。當這個字符串被系統使用時,它失敗。該字符串最初是通過GUI(filebrowserdialog)獲取的。 –

+0

@NatwarLath:你是如何查看字符串的?也許別的東西正在逃避它。嘗試打印出長度或逐個字符。 FileBrowserDialog將不會像這樣將斜線加倍。 –

0

要在C#字符串中指定\,請用另一個斜槓轉義它。例如string yourString =「C:\ test」;

如果你指定「C:\ test」你實際上說的是「C:[tab character] est」。

0

ŸDONET您使用@例如

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

的試試這個代碼

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

在字符串值的面前,試圖把一個@。 例如:

@"c:\test". 
0

二者必選其一

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

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