在网站内容运营中,我们经常会遇到字符串中包含不必要的空格或特定字符的情况。这些看似细微的问题,却可能影响内容的展示美观度、SEO效果乃至用户体验。例如,一个产品标题前后有空格可能在不同设备上显示不一致,或者一个关键词列表被额外的符号包围,影响了搜索引擎的识别。

安企CMS基于Go语言开发,其强大的Django模板引擎提供了多种实用的过滤器,能帮助我们轻松地处理这些字符串,确保最终呈现的内容干净、整洁、专业。今天,我们就来深入了解如何在安企CMS的模板中,灵活运用这些过滤器来删除字符串开头、结尾或所有位置的空格或指定字符。


删除字符串开头或结尾的空格/指定字符:trim 系列过滤器

当我们只关心字符串两端(开头和结尾)的清理时,trim 系列过滤器是我们的首选。它们能够高效地移除不需要的前导或尾随字符。

1. 移除字符串首尾的所有空格和换行符:trim

trim 过滤器在不指定任何参数时,会默认移除字符串开头和结尾的所有空格、制表符以及换行符。这在处理用户输入或从其他源采集的内容时非常有用。

例如,我们有一个从用户输入获取的标题,可能包含多余的空格和换行:

{% set rawString = "   \n\n   欢迎使用安企CMS!\n\n   " %}
<p>原始字符串:'{{ rawString }}'</p>
<p>清理首尾空格和换行符后:'{{ rawString|trim }}'</p>

这段代码会输出: 原始字符串:’ 欢迎使用安企CMS!

’ 清理首尾空格和换行符后:’欢迎使用安企CMS!’

可以看到,字符串两端的所有空白字符都被彻底移除了。

2. 移除字符串首尾的指定字符:trim(带参数)

trim 过滤器还可以接受一个字符串参数。这个参数定义了一个字符集,过滤器会检查字符串的首尾,只要字符属于这个字符集,就会被移除,直到遇到不属于该字符集的字符为止。

比如,一个公告标题可能被Markdown或CMS系统自动加上了前后缀符号,我们可以这样清理:

{% set messyTitle = "### 最新公告 ###" %}
<p>原始标题:'{{ messyTitle }}'</p>
<p>移除首尾'#'号后:'{{ messyTitle|trim:"#" }}'</p>

{% set mixedString = "ABCDEFGHABC" %}
<p>原始字符串:'{{ mixedString }}'</p>
<p>移除首尾'ABC'(字符集)后:'{{ mixedString|trim:"ABC" }}'</p>

输出结果会是: 原始标题:’### 最新公告 ###’ 移除首尾’#‘号后:’ 最新公告 ‘ 原始字符串:’ABCDEFGHABC’ 移除首尾’ABC’(字符集)后:’DEFGH’

请注意,trim:"ABC"并不是移除”ABC”这个子字符串,而是将’A’、’B’、’C’视为一个字符集。它会先检查开头,移除’A’,再移除’B’,再移除’C’,直到遇到’D’停止。结尾也同理。

3. 只移除字符串开头的指定字符:trimLeft

如果你的字符串只有开头有需要清理的字符,可以使用 trimLeft 过滤器。它同样可以接受一个字符集参数,其行为方式与 trim 相同,但只作用于字符串的左侧(开头)。

{% set dataString = "---重要信息---" %}
<p>原始数据:'{{ dataString }}'</p>
<p>只移除开头'-':'{{ dataString|trimLeft:"-" }}'</p>

输出结果: 原始数据:’—重要信息—’ 只移除开头’-‘:’重要信息—’

4. 只移除字符串结尾的指定字符:trimRight

同理,当只需清理字符串结尾的字符时,trimRight 过滤器会是你的好帮手。

{% set dataString = "---重要信息---" %}
<p>原始数据:'{{ dataString }}'</p>
<p>只移除结尾'-':'{{ dataString|trimRight:"-" }}'</p>

输出结果: 原始数据:’—重要信息—’ 只移除结尾’-‘:’—重要信息’


删除字符串所有位置的空格或指定字符:cut 过滤器

trim 系列过滤器只处理字符串的两端,但如果我们需要从字符串的任何位置(不仅仅是开头和结尾)移除特定字符时,cut 过滤器就派上用场了。它会将字符串中所有匹配到的字符都删除。

1. 移除字符串中所有空格:cut

当一段文本中的空格分布在中间,影响排版或数据处理时,cut 可以快速清理。

{% set spacedText = "安 企 CMS 是 一 款 强 大 的 内 容 管 理 系 统" %}
<p>原始文本:'{{ spacedText }}'</p>
<p>移除所有空格后:'{{ spacedText|cut:" " }}'</p>

输出结果: 原始文本:’安 企 CMS 是 一 款 强 大 的 内 容 管 理 系 统’ 移除所有空格后:’安企CMS是一款强大的内容管理系统’

2. 移除字符串中所有指定字符:cut(带参数)

trim 类似,cut 过滤器也接受一个字符集参数。它会遍历整个字符串,将所有属于该字符集的字符都删除。

{% set dirtyData = "这是<p>一段</p>包含<>符号的**数据**" %}
<p>原始数据:'{{ dirtyData }}'</p>
<p>移除所有'<', '>', '*', 'p' 字符后:'{{ dirtyData|cut:"<>*p" }}'</p>

输出结果: 原始数据:’这是

一段

包含<>符号的数据’ 移除所有’<‘, ‘>’, ‘*’, ‘p’ 字符后:’这是一段包含符号的数据

请注意,cut:"<>*p"同样是将’<‘、’>‘、’*‘、’p’视为一个字符集,而不是匹配特定的子字符串。它会逐个删除字符串中所有出现的这些字符。


结合使用:让内容处理更灵活

安企CMS的模板引擎允许将多个过滤器链式调用,这意味着你可以先用一个过滤器处理字符串,然后将处理后的结果传递给下一个过滤器进行二次处理。

例如,一个字符串可能既有首尾空格,又有一些内部不需要的符号:

{% set complexString = "  --- 安企CMS 助力内容运营 ---   " %}
<p>原始字符串:'{{ complexString }}'</p>
<p>先移除首尾空格,再移除'-'符号:'{{ complexString|trim|cut:"-" }}'</p>

输出结果: 原始字符串:’ — 安企CMS 助力内容运营 — ‘ 先移除首尾空格,再移除’-‘符号:’安企CMS 助力内容运营’

在实际应用中,你可能需要将处理后的结果赋值给一个新变量,以便在模板的其他地方使用,这可以通过 {% set %} 标签实现:

{% set cleanTitle = messyTitle|trim:"#" %}
<p>处理后的标题是:{{ cleanTitle }}</p>

如果处理的内容包含HTML标签,并且你不希望它们被转义显示,可以在最后加上 |safe 过滤器。但请务必确保内容来源可靠,以避免XSS攻击。


总结

通过灵活运用安企CMS提供的 trimtrimLefttrimRightcut 等过滤器,我们可以轻松地对网站内容中的字符串进行清理和格式化。无论是去除多余的空格,还是移除特定的字符,这些工具都能帮助我们呈现出更专业、更易读、更有利于SEO的内容。掌握这些模板技巧,将大大提升你在安企CMS上