ruby - 如何检查字符串是否以 Liquid 中的特定子字符串结尾?

标签 ruby jekyll liquid

我知道有一个 contains关键字,以便我可以使用:

{% if some_string contains sub_string %}
    <!-- do_something -->
{% ... %}
但是如何检查字符串是否以特定子字符串结尾?
我试过这个,但它不起作用:
{% if some_string.endswith? sub_string %}
    <!-- do_something -->
{% ... %}

最佳答案

作为解决方法,您可以使用 string slice方法

  • startIndex: some_string length - sub_string length
  • stringLength: sub_string size
  • 如果切片的结果与 sub_string 相同 -> sub_string 位于 some_string 的末尾。

  • 它在液体模板中有点结块,但看起来像:
    {% capture sub_string %}{{'subString'}}{% endcapture %}
    {% capture some_string %}{{'some string with subString'}}{% endcapture %}
    
    {% assign sub_string_size = sub_string | size %}
    {% assign some_string_size = some_string | size %}
    {% assign start_index = some_string_size | minus: sub_string_size %}
    {% assign result = some_string | slice: start_index, sub_string_size %}
    
    {% if result == sub_string %}
        Found string at the end
    {% else %}
        Not found
    {% endif %}
    

    如果 some_string 为空或比 sub_string 短,它仍然可以工作,因为切片结果也将为空

    关于ruby - 如何检查字符串是否以 Liquid 中的特定子字符串结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37022432/

    相关文章:

    ruby-on-rails - Rails - 用一个链接更新多个资源条目

    ruby - 简单的 ruby​​ 数组拆分

    css - 如何阻止 style.css 被视为 Jekyll 页面?

    Ruby:为什么我的成员没有在初始化中设置?

    Jekyll `where_exp` 过滤器,带有 "contains"表达式

    jquery - 将命令行应用程序移植到 Sinatra/Ruby on Rails 应用程序

    ruby - Debian Packagemanager 在构建 docker 镜像时不会在 alpine-linux 上安装 vagrant.deb 包

    jekyll - Jekyll 服务中的 rb-fsevent (>= 0.9.4, ~> 0.9) 错误 --watch

    html - Jekyll 分页器不生成任何页面

    ruby - Jekyll 存档页面中的嵌套液体循环不起作用。在内部条件中使用外部循环变量