2014-10-17 145 views
-4

這是這樣的刺痛:我應該如何將包含斜槓的字符串與單斜槓分開?

string a = "C:\folder1\folder2\folder3"; 

我想單獨與 '\' 字符串,所以這樣寫:

List<string> result = a.Split('\\').ToList(); 

但是,結果只包含一個成員:

{C: older1 older2 older3} 

我想要4個成員的結果:

{C:,folder1,folder2,folder3} 

那麼,我該怎麼做呢?

+4

什麼是'splite'?如果你使用逐字串字面值作爲'@「C:\ folder1 \ folder2 \ folder3」'並使用'Split()'方法,你會得到你的答案爲'C :, folder1,folder2,folder3'字符串數組,然後你可以如果您希望將它們作爲一個字符串使用'String.Join'方法。如果你不這樣做,就不要使用'String.Join'。 – 2014-10-17 14:06:37

+0

我不同意這個問題是無關緊要的,因爲「這是由於無法再現的問題或簡單的印刷錯誤引起的」。問題是'String.Split'返回一個而不是4個字符串。如果他的代碼真的使用'splite'而不是'Split',它甚至不會編譯。所以我修復了這個錯字。真正的問題是明確的,如果那是他使用的字符串。 – 2014-10-17 15:43:03

回答

5

問題是您的示例字符串不包含反斜槓。

這個字符串包含三個:

string a = "C:\\folder1\\folder2\\folder3"; 

或本:

string a = @"C:\folder1\folder2\folder3"; // google: verbatim string literal 

\f是換頁的escape sequence

+0

謝謝你的回答。但是,如果我剛剛得到這樣的刺痛:'string a =「C:\ folder1 \ folder2 \ folder3」',我無法阻止它發送給我。我能做什麼?我可以做一些工作來轉換它的格式嗎? – snowell 2014-10-18 08:04:37

+0

如果有人向你發送一個像這樣的strink,我相信他會包含反斜槓。不要將它與文本文件中的相同字符串混淆。那些轉義序列只能在字符串文字中使用 – 2014-10-18 13:17:50

0

定義你的字符串作爲

string a = @"C:\folder1\folder2\folder3"; 

所以它不會花費反斜槓字符專用。

+0

謝謝你的回答。但是,如果我剛剛得到這樣的刺痛:'string a =「C:\ folder1 \ folder2 \ folder3」',我無法阻止它發送給我。我能做什麼?我可以做一些工作來轉換它的格式嗎? – snowell 2014-10-18 08:08:41

+0

如果您收到的字符串(例如,來自文本文件)是「C:\ folder1 \ folder2 \ folder3」,Split('\\')將正常工作。問題是,如果你寫字符串a =「C:\ folder1 \ folder2 \ folder3」;在一個C#程序中,它會將\ f解釋爲特殊字符。如果您寫@「C:\ folder1 \ folder2 \ folder3」,則'\'不會作爲轉義字符處理。 – DaniCE 2014-10-20 08:15:36