如何从字符串变量中转义转义序列

时间:2016-04-29 02:28:57

标签: java c# string escaping

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

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

1 个答案:

答案 0 :(得分:0)

将@Hank D和@ Seige的评论转换为答案:

在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";

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