【问题标题】:Replace method c# not working as expected替换方法 c# 未按预期工作
【发布时间】:2013-03-26 15:50:23
【问题描述】:

我试图将双反斜杠替换为简单的反斜杠,但它不起作用。这是一张图片:

我仍然想知道为什么。我看到像this 这样的帖子,它对他们有用。 有什么建议吗?

更新

对不起,我弄错了,只是我拼错了一个反斜杠 要替换的代码是

string clear_patch = path.Replace(@"\\","\");

【问题讨论】:

  • 您的字符串不包含双反斜杠。点击放大镜,你会看到。
  • 对不起,我弄错了,只是我拼错了一个反斜杠
  • user2195741 我建议阅读Escape Characters 以及使用@ 符号时Literal 的含义,这将极大地帮助您
  • 你想达到什么目的?
  • 我需要一个 txt 文件的值。

标签: c# asp.net-mvc-4


【解决方案1】:

它正在工作。 \\ 在调试期间检查时不会被转义。尝试将值打印到控制台窗口或网页。

编辑* 你似乎很困惑。

您的路径实际上不包含任何双斜杠\\,它只是看起来那样,因为在调试期间查看字符串时单斜杠被转义了。考虑阅读Escape sequences

如果您想转义 single 斜杠,请不要在替换中使用逐字字符串文字,例如string.Replace("\\", "-") 将用连字符 - 替换路径中的所有单斜杠,尽管我不确定您为什么要这样做?请注意,在调试期间进行检查时,这仍会显示路径中包含 \\ 斜杠。打印到控制台窗口会显示:

C:-dev-vsprojects-VerificaionDeFirmas-VerificaionDeFirmas-verificaciondefirmas.txt

【讨论】:

  • 它不能工作,因为路径不包含双 `\` 字符。
  • @Aphelion - 调试器通过添加额外的“\”字符自动转义反斜杠。
  • @keyboardP 我知道,但 @'\\' 将搜索其中 2 个字符。我假设它是一条路径,实际路径不包含双字符。那为什么要用替换呢?
  • @Aphelion - 没错,但这并不意味着代码不起作用,它只是意味着它没有做任何有价值的事情。我以为你的意思是代码不起作用,因为调试器显示了两个反斜杠。
【解决方案2】:

监视窗口向您显示转义的字符串。所以当它显示\\ 时,字符串只包含\

您的替换正在尝试替换\\,因为您使用的是文字指示符@

将替换代码改为:

string clear_path = path.Replace("\\", "-");

【讨论】:

    【解决方案3】:

    使用"\\",而不是@"\\",因为这会查找2 个\ 字符。

    请注意,可视化工具始终为\ 实际字符显示\\ 表示法。

    【讨论】:

      【解决方案4】:

      这就是你想要做的:

      string clear_path = path.Replace(@"\","-");
      

      调试器中的表示显示\\,但这意味着转义字符和\

      【讨论】:

      • @AdrianCarneiro - 您通过添加“@”在编辑中修复了它,但您只是对其进行了编辑并再次将其删除。您需要使用逐字符号 (@) 或使用“\\”来转义“\”。
      • @keyboardP 不知道为什么要恢复原状。又来了
      【解决方案5】:

      你不应该双重逃避它,要么你这样做:

      string clear_path = path.Replace("\\","-")
      

      string clear_path = path.Replace(@"\","-")
      

      【讨论】:

        猜你喜欢
        • 2015-02-22
        • 1970-01-01
        • 2021-10-18
        • 1970-01-01
        • 2012-10-31
        • 2011-04-05
        • 2019-04-22
        • 2015-01-28
        • 1970-01-01
        相关资源
        最近更新 更多