2012-11-12 98 views
0

我创建一个窗口PDF文件的临时目录用这种方法:C#从字符串中删除反斜杠“”

System.IO.Path.GetTempPath() 

而且我串接一个像这样的代码日期时间字符串:

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 

但是,当我尝试在代码中的一些h后使用的值ow c#以下列方式移除了结尾字符串的反斜杠:

C:UsersAdminAppDataLocalTempdetalle-6020121112102343.pdf 

没有反斜杠。

任何人都有一个为什么c#这样做的想法?

在此先感谢。

UPDATE 我输出使用下面的函数用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

http://msdn.microsoft.com/en-us/library/362314fe.aspx – SLaks

+0

你在哪里看到没有反斜杠的版本? –

回答

1

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

如果你写一个字符串在源代码中的文字,你需要躲避\ S,或使用逐字字符串(@"C:\a\b"

3

启动调试器,将变量添加到您的收藏窗口和走一步通过您的程序来查找删除这些斜杠的代码。 C#本身并不这样做。

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

正如在评论中横空出世,有问题的字符串传递给JavaScript警告 - 这样的解决办法是添加一个调用HttpUtility.JavaScriptStringEncode

+0

+1使用'Path.Combine' - 它为你处理所有的斜杠,这意味着你不必记住斜线和什么不以 – Pyritie

+0

结尾是非常奇怪的,因为我使用调试器用手表,但是当我输出变量时,不再有反斜杠。 我会尝试Path.Combine并让你知道。 – Reedyseth

+0

你怎么输出这个值?也许这是显示值的问题 - 尝试输出value.Replace(“\\”,“_”)'来查看是否显示下划线。 –