【问题标题】:How to make a string variable literal?如何制作字符串变量文字?
【发布时间】:2019-03-09 12:00:19
【问题描述】:

您知道如何使用@ 符号创建字符串文字或“转义”吗?

string foo = @"\escaped\string"

我在整个互联网上搜索,但我找不到让字符串变量做到这一点的方法。如果你好奇我为什么要这样做,这里有一些背景故事:

我正在为我的批处理脚本制作一个 C# 插件,它将 base64 字符串保存在一个文件中。但是,我不断收到“路径名中的非法字符”之类的错误。所以很自然,我去谷歌搜索,我能找到的唯一“修复”是@字符串。但是,问题是,我没有一个简单的纯文本字符串变量。我获取可执行文件的位置,然后将其放入变量中,这样我就可以在可执行文件所在的位置(同一个文件夹)创建文件。而且,正如我之前所说,由于奇怪的路径错误,我不能这样做。我尝试了String.ReplaceRegex.Escape,但它们都不起作用,因为当我调用函数来获取位置时,错误似乎是正确的。作为参考,这是我用来获取可执行文件位置的“命令”。

System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().Location)

是的,我确实尝试了其他技巧,例如 AppDomain.CurrentDomain.BaseDirectory 等等,但它们似乎都不起作用。

有什么办法解决这个问题吗?我真的很沮丧,因为这应该很容易......

【问题讨论】:

  • 我认为您混淆了变量和常量。转义(通过双斜杠或 @ 符号)仅适用于常量,不适用于来自另一个函数调用的任何内容(如 AppDomain.CurrentDomain.BaseDirectory)。你能展示给你错误的代码吗?
  • System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().Location) 就是这样。在 C:\Users\...\Desktop\Folder 之类的地方它可以工作,但是当涉及一些特殊字符(如空格或点)时,它只会在我身上崩溃。
  • 你能发布你完整的相关代码吗?
  • 当然,hastebin.com/ralufayica.cpp 10 号线是那边的问题
  • 你提到的这条路径是否被转义双引号包围?因为我怀疑它不喜欢白色空间。

标签: c# string path escaping


【解决方案1】:

也许您可以在处理字符串/路径操作时尝试使用静态方法Path.Combine

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-16
    • 2019-02-08
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 2021-02-15
    • 2023-03-07
    相关资源
    最近更新 更多