【问题标题】:C#: escape dot character in stringC#:字符串中的转义点字符
【发布时间】:2014-10-27 16:50:48
【问题描述】:

我需要用字符串“\”在 C# 中用反斜杠替换所有出现的点。 (转义点),

我试过了:

string.Replace(".", "\\.");
string.Replace(".", @"\.");
string.Replace(".", @"\\\.");

我所有的尝试都以点前的偶数反斜杠结束,之后自动删除。

谢谢

【问题讨论】:

  • 我需要转义它,因为我在正则表达式中使用它,在这种情况下它意味着(除了换行符之外的任何字符),所以我需要转义它。
  • 前两个都完美运行!您可能正在使用 Watch 函数从断点查看值,但这会显示带有额外转义的反斜杠。如果你只是将字符串输出到控制台或文件之类的东西,你会看到它有效。
  • @PeterM。您应该将此添加为答案
  • 好的,刚刚做到了:)
  • 那么也许请显示更多代码,因为正如彼得已经说过的,你的前两个例子是完全正确的。那么问题一定出在其他地方。并请给出一个示例字符串。

标签: c# replace escaping backslash


【解决方案1】:

前两个都完美!

您可能正在使用 Watch 函数从断点处查看值,但这会显示带有额外转义的反斜杠。

如果你只是将字符串输出到控制台或文件之类的东西,你会发现它有效。

【讨论】:

  • 或者你可以在visual studio中点击放大镜图标来查看真正的价值
  • 我将字符串传递给正则表达式。当用户输入一个点“。”时,我想将它解释为一个点“。”,所以我需要在正则表达式中对其进行转义。但在我所有的尝试中,“。”变成“。”在正则表达式中,反斜杠被删除了,因为在使用上面的行之后,有偶数个反斜杠被删除
  • 例如,如果用户输入“foo.bar”,则正则表达式必须变为“foo\.bar”,但我在如上替换后得到“foo.bar”。但这匹配“foo.bar”但也匹配“foohbar”
  • Console.WriteLine("foo.bar".Replace(".", "\\.")); Console.WriteLine("foo.bar".Replace(".", @"\."));这些都可以正常工作。
  • 我在前一行中遗漏了一些导致它失败的东西。我的两个第一个选项有效,是的。谢谢!
【解决方案2】:

为此设计了一个方法:Regex.Escape()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    相关资源
    最近更新 更多