如何在Liquid中检查引号?

5

我正在处理一个输入字符串,例如“James“Jim”Smith”,其中人的昵称被双引号包含在字符串中。我一直在尝试使用contains运算符查找人是否有昵称,但它从未找到带有双引号的条目。例如:

<-- Name - James "Jim" Smith -->
{% if Name contains '\"' %}
   Do Something
{% else %}
   Always gets here
{% endif %}

如何使用contains(或split)在字符串中搜索双引号字面值?


你试过双斜杠吗?例如:'詹姆斯\"吉姆\"史密斯' - Rafal
6个回答

3
您不需要对它进行转义。以下内容将返回true:
{% assign name = 'James "Jim" Smith' %}
{% if name contains '"' %}
  true
{% else %}
  false
{% endif %}

1
我先尝试了这个方法,但它并没有起作用。对于双引号 '"' 或者反斜杠 '"' 它总是返回 false,即使使用双斜杠也不行(但还是值得一试的)。如果我搜索字符集的子集,例如 'Jim',那么 contains 语句会返回 true。 - DaveW
很奇怪,对我来说上面的代码输出为true。你可以尝试将其复制粘贴到你的项目中,看看会发生什么。 - GeorgeButter
@DaveW 这是很久以前的事了,你当时是在 Shopify 工作还是其他什么地方? - GeorgeButter

2
我找到了解决这个问题的方法。 以下是我的解决方案示例。
{{ post.title | remove: '& quot;'}}

注意:&和quot之间不应该有空格 - 我添加了这个来准确显示。

1
使用Liquid模板时,我发现\\\"会被翻译成\"

0
如果以上方法都不适用于您,请尝试这个。当我删除双引号时,它对我有用:
| remove '"'

0

我已经了解了通过将单引号和双引号加倍来转义它们的方法,并且自己也成功地做到了这一点...

在我的示例中,我试图从字符串中删除引号,但以下内容并未起作用:

{{ post.title | remove: """ }}

然而这确实起作用了:

{{ post.title | remove: """" }}

我认为这个可以在你的if语句中使用:

{% if name contains '""' %}

但是我不确定在你分配字符串时它会如何运作,或者你是否需要在你的 "assign" 中转义它。


-2

移除:'"' 看起来对我有效


1
请不要发表回答仅仅是为了确认另一个回答是否有效,这不是一个论坛。谢谢。 - Eric Aya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接