C#从字符串中删除反斜杠“\”

时间:2012-11-12 17:26:54

标签: c#

我正在使用此方法在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);

2 个答案:

答案 0 :(得分:3)

启动调试器,将变量添加到Watch窗口并逐步执行程序以查找删除这些斜杠的代码。 C#本身并不这样做。

附注 - 使用System.IO.Path.Combine连接路径(文件夹和文件)。

正如评论中所述,相关字符串已传递给JavaScript警报 - 因此解决方案是添加对HttpUtility.JavaScriptStringEncode的调用

答案 1 :(得分:1)

这不是字符串的值 这就是调试器显示字符串的方式。

如果您在源代码中编写字符串文字,则需要转义\,或使用逐字字符串文字(@"C:\a\b"