【问题标题】:Escaping single quote in String.Format()在 String.Format() 中转义单引号
【发布时间】:2009-08-29 10:24:55
【问题描述】:

我一直在试管,但我无法弄清楚这一点。可能很简单。

以下String.Format调用:

return dt.ToString("MMM d yy 'at' H:mmm");

正确返回:

2008 年 9 月 23 日 12:57

现在假设我想在年份之前添加一个单引号,以返回:

2008 年 9 月 23 日 12:57

由于单引号是保留的转义字符,如何对单引号进行转义以使其显示?

我尝试了双引号、三引号和四引号,但没有成功。

【问题讨论】:

    标签: .net escaping string.format


    【解决方案1】:

    您可以使用必须转义的反斜杠来转义它。要么

    return dt.ToString(@"MMM d \'yy 'at' H:mmm");
    

    或

    return dt.ToString("MMM d \\'yy 'at' H:mmm");
    

    【讨论】:

    • 为我辩护,我被你必须做的 {{{ 在String.Format() 中逃避卷发的方式迷住了,暂时失去了理智..谢谢!
    • 在这种情况下 % 字符是不必要的,因为 %d 和 %H 与其他格式模式结合使用。没有它们会更清晰。
    • @Martin 我不知道这是否相关,或者我是否应该提出一个新问题,但我怎样才能做到这一点? <asp:Label ID="Label1" runat="server" Text='<%# Eval("MyDate", "{0:MMM d yy 'at' H:mmm}")%>'> 目前我收到一个错误,我猜是因为 'at' 的单引号
    【解决方案2】:

    如果是用于 HTML,您可以只使用 HTML 实体。

    -- 编辑

    '
    

    -- 编辑

    只是为了让这篇文章没有错,正如其他人所指出的那样,转义工作正常 :)

    string s = t.ToString("MMM d \\'yy 'at' H:mmm");
    

    这是我最后一次不根据发帖人来测试内容:)

    【讨论】:

      【解决方案3】:

      我不喜欢 C# @ 字符串,除非我真的必须使用它们,所以我实际上会使用它。

      return dt.ToString("MMM d \\'yy 'at' H:mmm");
      

      这只是一种偏好,您会发现它更容易“阅读”。

      【讨论】:

      • 尝试编写一个单元测试来测试一个检测转义字符并处理它们的类。你会很快开始爱上@strings。
      • 写了 5 分钟的正则表达式后,我也开始爱上@strings。 :-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-17
      • 1970-01-01
      • 2011-10-04
      • 2016-10-02
      • 2015-07-16
      • 1970-01-01
      相关资源
      最近更新 更多