Hugo - 取一个视频标题并将其变成 URL
Hugo - Taking a video title and turning it into a 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/
出于好奇,有一个相反的函数可以使字符串“人性化”,returns 它删除分隔符并将第一个字母大写:
我正在使用 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/
出于好奇,有一个相反的函数可以使字符串“人性化”,returns 它删除分隔符并将第一个字母大写: