(C#) 转义字符串

问题描述 投票:0回答:2

我有以下代码:

string fFileName = @txtSelectedFolder.Text + "\\" + file.Name;

txtSelectedFolder.text 仅包含文件夹路径(例如:c: emp est)

file.name 是 FileInfo 类型,其中 name 包含对文件集合中当前选定文件的引用。

一旦我使用上面的代码,我的 fFileName var 就会填充一个转义字符串,如

c:\\temp\\test\filename.ext

我如何确保 fFileName 包含文件文件夹(和名称)的未转义版本

c# escaping fileinfo
2个回答
2
投票

添加额外的怪事时,您没有使用文字 (

\
) 。这意味着你的字符串在编译时会转义
\
并留下一个怪胎。

更改线路:

string fFileName = @txtSelectedFolder.Text + "\\" + file.Name;

string fFileName = txtSelectedFolder.Text + @"\" + file.Name;

变量前面不需要

@
文字符号。

或者:

您可以改为使用

string fFileName = Path.Combine(txtSelectedFolder.Text, file.Name);

将文件名正确连接到所选文件的路径。


1
投票

如果使用 .net 5 或更高版本,您也可以使用

Uri.UnescapeDataString

阅读更多相关信息这里,示例如下:


   var unescapedPath = Uri.UnescapeDataString("\\\\server\\dir1\\dir2");
   Console.WriteLine(unescapedPath);
   // \\server\dir1\dir2

© www.soinside.com 2019 - 2024. All rights reserved.