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

using a string variable that represents a filepath in c#?

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

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

我想将路径转换为@"C:\OpenSSL-Win64\bin\public_privatekey.pfx",这样反斜杠就不会读作转义字符。外部输入不能在输入中手动添加双反斜杠。即无法输入 "C:\OpenSSL-Win64\bin\public_privatekey.pfx"。有办法吗?

如果您的字符串来自外部来源并且不是硬编码的,例如您从文件中读取它,然后字符串已经 转义。你不需要做任何进一步的转义。试试吧:

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

要验证调试时只需将鼠标移到 path 变量上:

但是,如果您自己键入字符串,则需要转义斜杠:

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

或者通过逐字添加更简单:

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

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

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

string foo = textbox1.text;

或者

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

但请记住,引号不会用“@”转义,因此如果您需要转义引号 ("),请按以下方式进行:

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

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

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