.NET StringBuilder和verbatim字符串字面量

3

我的应用程序中有一个类,它使用PdfSharp来生成一些PDF报告。我把输出文件夹指定为一个带有verbatim的字符串。

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(@"\\",@"\");

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

你能发布完整的文件路径吗? - Alex Filipovici
@AlexFilipovici,如果有帮助的话,这是文件路径:"D:\Intranet\Students\DailyMarks\ECON_BSC2351_3:09AM.pdf"。 - Iskander Raimbaev
调试会话后,我发现实际上我的文件路径是file_path = "D:\Intranet\Students\DailyMarks\..." - 这只是调试器显示字符串的方式。 - Joe
3个回答

4

可能是由于 DateTime.Now.ToShortString() 方法导致的,该方法会向路径中添加禁止使用的字符 (:)。


1
非常感谢你。你说的禁止使用字符(:)是绝对正确的。 - Iskander Raimbaev

3

完全没问题。

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

在普通字符串中,您需要转义反斜杠,而在文本字符串中会自动完成此操作。


0
今天我遇到了另一种类似的情况,涉及将日语中的「:」(内部包含整个冒号)作为文件名的元素发送,而它起作用了。我想知道,为什么俄语的冒号会引发异常,而日语不会。非常有趣。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接