Hugo - 获取视频标题并将其转换为 URL

问题描述

我正在与 Hugo 合作,并且有一个用例,其中有很多不同的视频标题都遵循大致相同的考虑:

  • 删除所有下划线并替换为破折号
  • 删除两边有空格的所有破折号,并替换为没有空格的破折号
  • 删除所有特殊字符(? 和 !)并替换为空
  • 删除所有句点并用破折号替换
  • 删除所有剩余的空格并替换为破折号
  • 全部小写

到目前为止,我已经编写了以下代码,我正在努力弄清楚如何简化它。

                          {{ $step1_title := replace .title "_" " " }}
                          {{ $step2_title := replace $step1_title " - " "-" }}
                          {{ $step3_title := replace $step2_title "?" "" }}
                          {{ $step4_title := replace $step3_title "." "-" }}
                          {{ $step5_title := replace $step4_title " " "-" | lower }}
                          {{ $step5_title }}

这似乎有很多步骤,并且没有考虑到两者?和 !。我假设 replaceRE 更适合该步骤,但在使用 [?]|[!] 定义时它不会识别这些字符。任何使上述更有效的指针将不胜感激。

解决方法

对于其他正在寻找答案的人 - Hugo 确实有一个名为 urlize 的内置函数,它正是这样做的!

https://gohugo.io/functions/urlize/

好奇的是,有一个相反的函数可以“人性化”字符串并在删除分隔符并大写第一个字母的情况下返回它:

https://gohugo.io/functions/humanize/