【问题标题】:Escaping Characters in Liquid String液体字符串中的转义字符
【发布时间】:2015-10-07 03:32:34
【问题描述】:

我正在尝试整理一个包含各种尺寸的标签列表(在 Shopify 中使用 Liquid)。尺寸对英寸和英尺使用单引号和双引号。因为它同时使用两者,所以会导致字符串正确关闭的问题。我尝试过使用标准转义字符“\”,但这似乎不起作用。是否可以在 Liquid 中转义字符,或者有人可以推荐其他方法吗?

{% assign tags = "4'x6', 5'x8', 8'x10', 9'x12', 10'x14', 5'x7', 3'x5', 2'x3', 6'x9', 16\"x16\"x16\", 24\"x36\", 20\"x32\", 20\"x48\", 20\"x72\", 42\"x48\" rectangular, 55\"x57\" with lip" | split: ',' %}

【问题讨论】:

  • 因为在 Liquid 中没有真正的转义字符,我不得不对一个应该包含单引号和双引号的字符串使用这个技巧:assign str = 'a QtestQ "string"' | replace: 'Q', "'",它给出了输出 a 'test' "string"(注意:如果您的字符串有冲突的Q,请改用QUOTE\1 或其他内容。)

标签: string variables shopify liquid


【解决方案1】:

在液体中,您可以使用\' \" 等来转义它们,但您的应用程序可能会转义整个序列。而是使用 unicode:

{% assign tags = "4\2019 × 6\2019, 5\2019 × 8\2019, ..., 16\201D × 16\201D × 16\201D, 24\201D × 36\201D, ..., rectangular, 55\201D × 57\201D with lip" | split: ',' %}

供参考http://www.blooberry.com/indexdot/html/tagpages/entities/genpunctuation2.htm

我通常会构建整个模板,然后在最后进行替换:

{% capture escape_to_unicode %}{% assign tags = "4′ × 6′, 5′ × 8′, ..., 16″ × 16″ × 16″, 24″ × 36″, ..., rectangular, 55″ × 57″ with lip" | split: ',' %}{% endcapture %}{{ escape_to_unicode | replace: "‘", \2018 | replace: "’", \2019 | replace: '“', \201C | replace: '”', \201D }}

启动:我很讨厌人们用印刷意见回答有关转义字符的问题。现实情况是,在某些情况下,您必须对人类使用“非人类”等价物。我的示例通常在电子邮件 html/css 中,我相信肯定还有其他场景。

【讨论】:

    【解决方案2】:

    从排版上讲,引号是用来表示英尺和英寸的错误字形。相反,您应该分别使用素数 () 和双素数 () 符号,以及乘号 (×) 而不是“x”:

    {% assign tags = "4′ × 6′, 5′ × 8′, ..., 16″ × 16″ × 16″, 24″ × 36″, ..., rectangular, 55″ × 57″ with lip" | split: ',' %}
    

    如果您设置使用引号,也许您可​​以使用 HTML 实体(我不确定这是否有效):

    {% assign tags = "4'x6', ..., 16"x16"x16", 24"x36", 20"x32", ..." | split: ',' %}
    

    【讨论】:

      猜你喜欢
      • 2022-01-02
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-17
      相关资源
      最近更新 更多