使用一个字符串变量表示C#中的文件路径?

时间:2018-06-20 07:42:26

标签: c# escaping filepath

我有一个名为path的变量,它是程序中的外部输入。

例如路径=“ C:\ OpenSSL-Win64 \ bin \ public_privatekey.pfx”;

我想将路径转换为@“ C:\ OpenSSL-Win64 \ bin \ public_privatekey.pfx”,以使反斜杠不被视为转义字符。外部输入不能手动在输入中添加双反斜杠。即无法键入“ C:\\ OpenSSL-Win64 \\ bin \\ public_privatekey.pfx”。有办法吗?

3 个答案:

答案 0 :(得分:2)

如果您的字符串来自外部来源,并且未进行硬编码,例如您从文件中读取它,然后已经 的字符串转义了。您无需做任何进一步的转义。只需尝试一下:

var path = GetThePath();
ConSole.WriteLine(path); // prints C:\OpenSSL-Win64\bin\public_privatekey.pfx

要在调试时确认将鼠标移到path变量上,请执行以下操作:

enter image description here 但是,如果您自己输入字符串,则需要转义斜杠:

var path = "C:\\OpenSSL-Win64\\bin\\public_privatekey.pfx";

或者通过添加逐字记录甚至更简单:

var path = @"C:\OpenSSL-Win64\bin\public_privatekey.pfx";

答案 1 :(得分:0)

当您将文本框中的文本分配给字符串类型变量时,由于框架了解您正在将文本分配给字符串变量,因此反斜杠将自动添加以转义特殊字符。

如果需要编程实现,只需在字符串前添加一个'@'即可使用逐字字符串。

string foo = textbox1.text;

string foo = @"C:\OpenSSL-Win64\bin\public_privatekey.pfx";

但是请记住,引号不会以'@'进行转义,因此,如果您需要转义引号(“),请执行以下操作:

string foo = "some text \"some more text\" and something else here";

答案 2 :(得分:0)

这听起来像是配置而不是代码。

我的解决方案是使用json / xml / yaml文件并在运行时从中读取设置。