我正在使用此方法在Windows临时目录上创建PDF文件:
System.IO.Path.GetTempPath()
并且我将字符串与DateTime连接起来,就像这段代码一样:
string pathPdf = string.Format(System.IO.Path.GetTempPath() + "detalle-{0}{1:yyyyMMddhhmmss}.pdf", txtFolio_detalle_consum.Text, DateTime.Now);
这是字符串的值:
C:\\Users\\Admin\\AppData\\Local\\Temp\\detalle-6020121112102343.pdf
但是当我尝试在代码中稍后使用该值时,c#如何以下列方式删除以字符串结尾的双反斜杠:
C:UsersAdminAppDataLocalTempdetalle-6020121112102343.pdf
没有反斜杠。
任何人都知道为什么c#会这样做?
提前致谢。
更新 我使用以下函数输出带有Javascript警报的变量:
protected void alerta(string msj)
{
string script1 = @"<script type='text/javascript'>alert('" + msj + "');</script>";
ScriptManager.RegisterStartupScript(this, typeof(Page), "Adv", script1, false);
}
我也传递这个变量,在像这样的查询字符串上使用它:
string scriptjs = string.Format("<script language='JavaScript'>window.open('emergentes_consum/vista_previa_imprimir.aspx?DocumentUrl={0}', '_blank', 'fullscreen=no')</script>",pathPdf);
ScriptManager.RegisterStartupScript(this, typeof(Page), "Capturar_Emails", scriptjs, false);
答案 0 :(得分:3)
启动调试器,将变量添加到Watch窗口并逐步执行程序以查找删除这些斜杠的代码。 C#本身并不这样做。
附注 - 使用System.IO.Path.Combine
连接路径(文件夹和文件)。
正如评论中所述,相关字符串已传递给JavaScript警报 - 因此解决方案是添加对HttpUtility.JavaScriptStringEncode
的调用
答案 1 :(得分:1)
这不是字符串的值 这就是调试器显示字符串的方式。
如果您在源代码中编写字符串文字,则需要转义\
,或使用逐字字符串文字(@"C:\a\b"
)