C# .NET StringBuilder和逐字字符串文字

C# .NET StringBuilder和逐字字符串文字,c#,stringbuilder,verbatim-string,C#,Stringbuilder,Verbatim String,在我的应用程序中,有一个类与PdfSharp一起生成一些PDF报告。我将输出文件夹指定为带有逐字的字符串 string file_path = @"D:\Intranet\Students\DailyMarks\"; 还有一个StringBuilder,它根据一些ID和日期时间生成文件名: ... sb.Append(document.Type); sb.Append(document.Id); sb.Append(DateTime.Now.ToShortString()); 最后我做了以下

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

string file_path = @"D:\Intranet\Students\DailyMarks\";
还有一个StringBuilder,它根据一些ID和日期时间生成文件名:

... sb.Append(document.Type); sb.Append(document.Id); sb.Append(DateTime.Now.ToShortString());
最后我做了以下几点

file_path + sb.toString();

但我的申请是个例外。调试会话后,我看到实际上我的文件路径是

file_path = "D:\\Intranet\\Students\\DailyMarks\\...";
据我所知,它发生在原始文件与StringBuilder的toString()调用连接之后。 我试图用如下内容替换文件路径字符串:

file_path = file_path.Replace(@"\\",@"\");
但它不起作用。我哪里做错了?

完全没问题

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

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

这可能是由
DateTime.Now.ToShortString()
方法造成的,该方法将禁止字符添加到路径(
)。

我今天遇到的另一个类似情况是关于发送日语的“冒号:”(冒号,内有整个)作为文件名的元素,它起作用了。我想知道,为什么俄语冒号称为例外而日语不称为例外。非常有趣

你能发布完整的文件路径吗?@AlexFilipovici,如果有帮助的话,这里是:“D:\\Intranet\\Students\\DailyMarks\\ECON\u BSC2351\u 3:09AM.pdf”在调试会话之后,我看到我的文件路径实际上是file\u path=“D:\\Intranet\\Students\\DailyMarks\\…”-这就是调试器显示字符串的方式。非常感谢。关于禁止使用的字符,你是绝对正确的(:)