我有一个字符串:在C#中,替换 “\” 到 “”
var path = "d:\\project\\Bloomberg\\trunk\\UI.Demo\\";
我试图取代\\
到\
。
我已经试过这样:
path = path.Replace("\\\\", "\\");
path = path.Replace(@"\\", @"\");
这些都不取代双反斜线单反斜线。
我有一个字符串:在C#中,替换 “\” 到 “”
var path = "d:\\project\\Bloomberg\\trunk\\UI.Demo\\";
我试图取代\\
到\
。
我已经试过这样:
path = path.Replace("\\\\", "\\");
path = path.Replace(@"\\", @"\");
这些都不取代双反斜线单反斜线。
path
不包含任何双反斜杠。 "blah\\blah"
实际上是blah\blah
。
在正常的字符串文字中(那些不以@
开头的文字),您需要在它们前面放置一个反斜杠(\
)以避开某些字符。其中一个字符是反斜杠本身,所以如果要将一个反斜杠放入一个字符串中,请使用另一个反斜杠进行转义,这就是为什么path
包含所有这些双反斜杠。在运行时,这些将是单反斜杠。
看到这里可用的转义序列:C# FAQ: Escpape Sequences
逐字字符串,另一方面(从一个@
茨艾伦),不需要逃避大多数这些字符。所以@"\"
实际上是\
。您需要在逐字串中转义的唯一字符是引号。你只需输入一个双引号即可。所以@""""
实际上是"
。
所以,如果你想把d:\project\Bloomberg\trunk\UI.Demo\
放入一个字符串中,你有两种可能性。
普通的字符串字面(注意\
被转义):
var path = "d:\\project\\Bloomberg\\trunk\\UI.Demo\\";
或逐字字符串(不需要逃避\
):
var path = @"d:\project\Bloomberg\trunk\UI.Demo\";
\\
是
\
逃逸
:
var path = "d:\\project\\Bloomberg\\trunk\\UI.Demo\\";
所以实际上说:
@"d:\project\Bloomberg\trunk\UI.Demo\"
所以,当你与\
你没有更换任何东西取代\\
。双斜杠在正常字符串中看起来像\\\\
。你在替换方法中做了正确的操作。
变化:
var path = "d:\\project\\Bloomberg\\trunk\\UI.Demo\\";
到:
var path = @"d:\\project\\Bloomberg\\trunk\\UI.Demo\\";
,你会好的。请记住,\\
表示正常字符串中的\
,所以如果你想要实际的双反斜杠,你需要使用\\\\
或简单地在字符串前面加上@作为前缀 - 就像在调用Replace时一样。其次,因为您可能不需要在特定情况下调用Replace,因为您看到的那些\\
实际上是单反斜杠,因为您的字符串没有以@为前缀,并且转义序列被评估。
“你会好的”意味着第一个字符串是不正确的。第一个字符串很好,可以用于文件处理代码而不会出现问题。 – 2012-07-25 09:06:47
我有点意识到我的解释可能被解释为这样 - 因此我的第二段。 – 2012-07-25 09:08:57
你不会忘记把@?你的连锁店前面说过?
var path = @"d:\\project\\Bloomberg\\trunk\\UI.Demo\\";
但是 - > @“d:\ project \ Bloomberg \ trunk \ UI.Demo \”;
是egal - >“d:/project/Bloomberg/trunk/UI.Demo/”;
你为什么要用\替换\\? \是一个转义字符,所以\\对所有意图和目的都是\ – RedEyedMonster 2012-07-25 09:04:22
@Ilya该字符串很好,您不需要对它进行任何操作就可以在文件处理代码中使用它。 – 2012-07-25 09:08:44