2016-04-29 108 views
2

我试图将字符串变量初始化为其中一个文件的路径。它报告转义序列无效。任何方案?如何从字符串变量中的转义序列转义

String s="F:\abc\xyz.txt"; 
+0

任何特定的语言? –

+3

“\”字符具有特殊含义,用于“转义”或更改下一个字符的含义(“\ t”表示例如制表符)。因为它具有创建转义序列的功能,所以如果您确实需要字符串中的\字符,则需要使用转义序列“\\”,该转义序列将被转换为\字符。 –

+0

非常感谢..这项工作就像一个魅力:) – Kyrie

回答

0

转换@Hank d和@围攻的评论答案:

在Java和C#(这是很难说你用这里的语言,但很可能这两个中的一个),该反斜杠字符\用于启动转义序列您可以使用在您的字符串中包含通常在键盘上无法输入的特殊字符,否则会导致问题。例如,您可以通过编写\n把一个换行符的字符串:

String multiline = "This String\nSpans Multiple\nLines!"; 

可以包括与\U序列Unicode字符:

String heart = "I \U2764 Escape Sequences!"; 

而且可以包括与\"序列嵌套的报价:

String quotation = "Quoth the raven, \"Nevermore.\""; 

在你的情况,你想使用\字符作为路径分隔符,但Java/C#正在解释你在做什么,试图构建无效的转义序列。也就是说,字符串

F:\abc\xyz.txt 

是越来越理解为

F:(\a)bc(\x)yz.txt 

为了解决这个问题,你可以使用一个事实,即\\代表一个反斜线和转义序列写出这样的字符串:

String s = "F:\\abc\\xyz.txt"; 

有趣的事实:在Java/C#中选择反斜杠作为路径分隔符的原因在于它在C中选择了这种方式,因为该字符很少被使用......然后DOS/Windows来了,打破了一切。 :-)

另外,在C#中,你可以写

String s = @"F:\abc\xyz.txt"; 

@前缀禁用转义字符串,这让事情变得更容易阅读的序列。