.NET StringBuilder和逐字字符串文字

时间:2016-04-24 22:29:48

标签: c# stringbuilder verbatim-string

在我的应用程序中,有一个类与 PdfSharp 一起生成一些PDF报告。我将输出文件夹指定为带有逐字

的字符串
string file_path = @"D:\Intranet\Students\DailyMarks\";

还有一个StringBuilder,它根据一些ID和DateTime生成文件名:

... sb.Append(document.Type); sb.Append(document.Id); sb.Append(DateTime.Now.ToShortString());

最后我做了以下

file_path + sb.toString();

但我的应用程序遇到异常。调试会话后,我发现实际上我的 file_path

file_path = "D:\\Intranet\\Students\\DailyMarks\\...";

据我所知,在将原始文件与StringBuilder的toString()调用连接之后,就会发生这种情况。 我试图用这样的东西替换 file_path 字符串:

file_path = file_path.Replace(@"\\",@"\");

但它不起作用。我哪里做错了?

3 个答案:

答案 0 :(得分:5)

可能这是由DateTime.Now.ToShortString()方法引起的,该方法会在路径(:)中添加禁用字符。

答案 1 :(得分:4)

完全没问题。

"D:\\Intranet\\Students\\DailyMarks\\..." == @"D:\Intranet\Students\DailyMarks\..."

在常规字符串中,您需要逐字地转义斜杠,这是自动完成的

答案 2 :(得分:1)

我今天面临的另一个类似情况是将日语「:」(整个内部冒号)作为档案的名称元素发送,并且有效。我想知道,为什么俄罗斯冒号称为例外,而日本人则不称。很有意思。