.NET StringBuilder 和逐字字符串文字
.NET StringBuilder and verbatim string literal
在我的应用程序中有一个 class 可以与 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(@"\",@"\");
但它不起作用。我哪里做错了?
完全没问题。
"D:\Intranet\Students\DailyMarks\..." == @"D:\Intranet\Students\DailyMarks\..."
在常规字符串中,您需要转义斜杠,逐字自动完成
可能是DateTime.Now.ToShortString()
方法造成的,在路径中添加了禁止字符(:
)。
我今天遇到的另一个类似的情况是发送日语「:」(冒号和整个内部)作为文件名的元素,它起作用了。我想知道,为什么俄语冒号会调用异常而日语不会。很有意思。
在我的应用程序中有一个 class 可以与 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(@"\",@"\");
但它不起作用。我哪里做错了?
完全没问题。
"D:\Intranet\Students\DailyMarks\..." == @"D:\Intranet\Students\DailyMarks\..."
在常规字符串中,您需要转义斜杠,逐字自动完成
可能是DateTime.Now.ToShortString()
方法造成的,在路径中添加了禁止字符(:
)。
我今天遇到的另一个类似的情况是发送日语「:」(冒号和整个内部)作为文件名的元素,它起作用了。我想知道,为什么俄语冒号会调用异常而日语不会。很有意思。