【问题标题】:How can I split a string by newline in Shopify?如何在 Shopify 中按换行符拆分字符串?
【发布时间】:2015-02-25 23:28:39
【问题描述】:

我的settings.html 中有一个字段,我希望用户输入由两个换行符分隔的多个段落。我想将此输入字符串拆分为一个字符串数组,每个字符串代表一个段落。

我想做这样的事情:

{% assign paragraphs = settings.intro | split: '\n' %}
{% for paragraph in paragraphs %}
    <p>
        {{ paragraph }}
    </p>
{% endfor %}

我似乎不知道如何在 Liquid 中引用换行符。我该怎么做呢?有什么解决办法吗?

【问题讨论】:

    标签: shopify liquid


    【解决方案1】:

    试试这个:

    {% assign paragraphs = settings.intro | newline_to_br | split: '<br />' %}
    {% for paragraph in paragraphs %}<p>{{ paragraph }}</p>{% endfor %}
    

    【讨论】:

    • 建议:在newline_to_br之后添加strip_newlines
    • 为什么不只是 split by \n 像这样:settings.intro | split: '\n'
    【解决方案2】:

    @josh-browns 的回答让我非常了解,对于大多数情况来说可能就足够了。但是,我有一些来自用户生成的双行的空白段落。

    strip_newlines 的 Denilson Sá Maia 评论对我的降价处理器没有帮助,所以我在输出段落之前手动检查了每一行是否为空。

    {% for paragraph in paragraphs %}
        {% assign paragraph-length = paragraph | number_of_words %}
        {% if paragraph-length > 0 %}
            <p>{{ paragraph }}</p>
            IMAGE HERE
        {% endif %}
    {% endfor %}
    

    这并不能解决数组中的空白,因为我遍历数组以创建一个新的,只有有效的内容。如果有一个过滤器可以处理数组,而不仅仅是哈希,那就太好了。

    {% assign all-paragraphs = content  | strip | newline_to_br | strip_newlines | split: "<br />"  %}
    {% assign paragraphs = site.emptyArray  %}
    {% for paragraph in all-paragraphs %}
        {% if paragraph and paragraph != "" and paragraph != site.emptyArray %}
             {% assign paragraphs = paragraphs | push: paragraph %}
        {% endif %}
    {% endfor %}
    

    【讨论】:

    • 过滤标签 uniq 也将删除除一个空行之外的所有行。
    猜你喜欢
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多