使用流畅的语法将每个单词的首字母大写?

新手上路,请多包涵

我正在尝试使用流式语法在 LocomotiveCMS 安装中设置 SEO。我正在尝试对其进行编码,以便使用 {{ page.title }} 动态提取页面标题,然后强制将每个单词的首字母大写。

我试过这个:

 <title>
      {{ page.title | camelcase }} | {{ site.name }}
</title>

基于此处的液体语法文档:http: //docs.shopify.com/themes/liquid-basics/output#camelize

但它不起作用。使用 capitalize 有效,但它只将第一个单词的第一个字母大写。

谢谢!

原文由 APAD1 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 282
2 个回答

我建议使用插件来获得这种行为

_plugins/_capitalize_all.rb :

 require 'liquid'
require 'uri'

# Capitalize all words of the input
module Jekyll
  module CapitalizeAll
    def capitalize_all(words)
      return words.split(' ').map(&:capitalize).join(' ')
    end
  end
end

Liquid::Template.register_filter(Jekyll::CapitalizeAll)

用法:

 {{ "mein text" | capitalize_all }}

原文由 AsTeR 发布,翻译遵循 CC BY-SA 4.0 许可协议

有一种方法可以仅使用 Liquid 语法来实现这一点。无需任何插件。

将您的单词字符串分解为一个数组,并使用 for 循环和大写过滤器将每个单词的首字母大写。如果您将其适当地封装在捕获语句中,那么每个单词的第一个字符都会大写。

 {% assign words = "Hi, how are you today?" | split: ' ' %}

{% capture titlecase %}
  {% for word in words %}
    {{ word | capitalize }}
  {% endfor %}{% endcapture %}
{{ titlecase }}

输出:

你好,你今天怎样?

请注意,所有这些都在一行中,并且整个捕获语句中只出现一次空格!

原文由 taky2 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题