2013-05-07 102 views
3

似乎圍繞着這個問題有很多問題,但我發現的這些問題似乎都不適用於我。String.replace「\」with「/」

我的代碼:

string subFolderName = category = "Parent/Sub\\Sub sub"; 
string category = subFolderName.Replace(@"\\", @"/"); 

這將返回category爲相同的字符串作爲subFoldername,即:

"Parent/Sub\\Sub sub". 

我真正想要的是:

"Parent/Sub/Sub sub" 
+2

''Parent/Sub \\ Sub sub'''(without the leading'@')contains * * single * \ character。所以替換沒有找到它。然後,您將在調試器中檢查結果,該調試器會顯示字符串,因爲您需要將它們作爲常規文字(例如,它會轉義字符\) – 2013-05-07 10:48:54

+0

謝謝,這很有道理。 – Robert 2013-05-07 10:50:34

回答

7

試試看

string category = subFolderName.Replace(@"\", @"/"); 

它將工作,因爲category = "Parent/Sub\\Sub sub";包含單個\

+2

完美!謝謝,我會盡快接受這個答案。 – Robert 2013-05-07 10:51:07

+1

你可以用'「/」'「替換'@」/「';-) – 2013-05-07 10:51:17

2

由於Damien_The_Unbeliever在他comment說,當你寫"Parent/Sub\\Sub sub"作爲一個字符串,實際上它僅包含一個\字符。因此,String.Replace方法在您的字符串中找不到\\

當您使用verbatim string literal,您的字符串將究竟你怎麼寫的。

string subFolderName = category = @"Parent/Sub\\Sub sub"; 
string category = subFolderName.Replace(@"\\", @"/"); 
Console.WriteLine(category); 

Outpuw將是;

Parent/Sub/Sub sub 

這是DEMO

+0

非常好 - 謝謝。 – Robert 2013-05-07 10:53:26

+0

@Robert不客氣';)' – 2013-05-07 10:54:03

1

你是如何看待類別的內容?如果您使用的是與調試,然後它會逃過字符串中的字符串,以便\將顯示爲\\

,所以你要麼需要

string category = subFolderName.Replace(@"\", @"/"); 

string category = subFolderName.Replace("\\", "/"); 
+0

我在找VS調試器。現在有道理。 – Robert 2013-05-07 10:54:57

1
string category = subFolderName.Replace(@"\", "/"); 

使用此。