2014-10-17 146 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