`split`和`make_list`过滤器如何将字符串按指定分隔符或字符拆分成数组?

📅 👁️ 71

在安企CMS的模板开发中,灵活处理字符串数据是构建动态页面不可或缺的技能。有时,我们需要将一个较长的字符串,按照我们指定的某个字符或字符串作为分隔符,拆分成一个数据列表(也就是我们常说的数组);另一些时候,我们可能需要更精细地将字符串中的每一个字符都独立出来进行处理。安企CMS为此提供了两个非常实用的过滤器:splitmake_list,它们能帮助我们轻松实现这些需求。

split 过滤器:按指定分隔符拆分字符串

split过滤器的主要作用,顾名思义,就是“拆分”。它能够将一个字符串,根据您提供的分隔符,将其切割成多个部分,并将这些部分作为元素存储在一个数组中。这就像我们把一根长绳子,在每一个打结的地方剪断,得到多段短绳子一样。

它为什么实用呢? 想象一下,当您从后台获取的某个字段内容是多个值用逗号、分号或其他符号连接起来时(例如“SEO,网站优化,关键词”),您可能希望将它们单独显示,或者对每一个词进行进一步处理。这时,split过滤器就能派上用场。

如何使用它? split过滤器的基本语法是 {{ obj|split:"分隔符" }}

例如,如果您有一个字符串 products = "Apple,Banana,Orange",并想将其拆分成一个包含“Apple”、“Banana”、“Orange”的数组,可以这样写:

{% set productList = products|split:"," %}
{% for item in productList %}
    <li>{{ item }}</li>
{% endfor %}

这样,页面上就会显示:

  • Apple
  • Banana
  • Orange

特殊情况的处理:

  • 分隔符不存在: 如果指定的分隔符在原字符串中不存在,split过滤器并不会报错,而是会将整个字符串作为一个单独的元素,返回一个只包含一个元素的数组。例如,"Hello World"|split:","的结果是["Hello World"]
  • 分隔符为空字符串: 如果您将分隔符设置为空字符串(""),split过滤器会非常特殊地将字符串中的每一个UTF-8字符都拆分成一个独立的元素,生成一个字符数组。这在某些特定场景下非常有用,但通常情况下,如果您想按字符拆分,make_list会是更直观的选择。

make_list 过滤器:将字符串拆分为字符数组

split过滤器功能相似,但侧重点略有不同的是make_list过滤器。它能够将一个字符串直接拆分成一个由单个字符组成的数组,不依赖于任何分隔符,而是直接将字符串视为字符序列。这就像把每个字、每个符号都单独挑出来。

它为什么实用呢? 当您需要对字符串中的每一个字符进行单独操作,例如逐个字符显示、检查字符类型,或者进行一些特殊排版时,make_list就显得尤为方便。

如何使用它? make_list过滤器的语法更为简洁:{{ obj|make_list }}

例如,如果您有一个中文字符串 greeting = "你好安企",并想逐个显示其中的字符,可以这样写:

{% set charList = greeting|make_list %}
{% for char in charList %}
    <span>{{ char }}</span>-
{% endfor %}

页面上可能会显示: 你-好-安-企-

可以看到,make_list会将中文字符也视为一个独立的元素进行拆分,非常适合处理多语言文本。

结合使用:实用场景

splitmake_list过滤器并非独立存在,它们经常与其他模板标签和过滤器结合使用,以实现更复杂的字符串处理逻辑。

例如,您可能先用split拆分出一个数组,再用join过滤器将数组元素以另一种方式拼接起来:

{% set originalString = "Apple, Banana, Orange" %}
{% set processedList = originalString|split:", " %} {# 拆分成 ["Apple", "Banana", "Orange"] #}
{% set newString = processedList|join:" - " %} {# 拼接成 "Apple - Banana - Orange" #}
<p>原始字符串: {{ originalString }}</p>
<p>处理后字符串: {{ newString }}</p>

这在需要重新格式化列表数据的展示方式时非常方便。

另一个例子是使用make_list配合for循环,实现对字符串的精细控制,比如检查每个字符是否是数字:

{% set myText = "AnQiCMS2024" %}
{% for char in myText|make_list %}
    {% if char|integer %} {# 尝试将字符转换为整数,非数字会返回0 #}
        <span>数字: {{ char }}</span>
    {% else %}
        <span>字符: {{ char }}</span>
    {% endif %}
{% endfor %}

这将逐个检查myText中的字符,并根据其类型进行不同的显示。

这两个过滤器虽然看似简单,但在安企CMS模板开发中却能发挥巨大作用,让您在处理字符串数据时更加得心应手。无论是将后台的多个标签拆分展示,还是对用户输入的内容进行字符级别的处理,splitmake_list都能提供高效便捷的解决方案。


常见问题 (FAQ)

Q1: splitmake_list过滤器处理中文时有什么区别吗? A1: 是的,它们在处理中文时存在差异。split过滤器会根据您指定的中文或英文字符分隔符进行拆分。而make_list过滤器则不依赖分隔符,它会把字符串中的每一个中文字符或英文字符都作为一个独立的元素来拆分,生成一个字符数组。简单来说,split是按“词语或短语”来分,make_list是按“字”来分。

Q2: 拆分后的数组如何遍历和显示? A2: 无论是split还是make_list拆分后的结果都是一个数组(或列表),您可以使用安企CMS模板中内置的{% for item in array_variable %}循环标签来遍历并显示数组中的每一个元素。例如,{% for tag in tagsString|split:"," %}<span>{{ tag }}</span>{% endfor %}

Q3: 如果想将拆分后的数组再次拼接成字符串,应该使用哪个过滤器? A3: 如果您需要将拆分后的数组元素重新连接成一个字符串,可以使用join过滤器。这个过滤器与split的功能恰好相反。例如,{{ productList|join:" - " }}会将数组["Apple", "Banana", "Orange"]拼接成字符串"Apple - Banana - Orange"

相关文章

`slice`过滤器如何截取字符串或数组中指定范围内的元素?

AnQiCMS 模板引擎提供了丰富的过滤器,让您在展示内容时拥有极大的灵活性。其中,`slice` 过滤器是一个非常实用的工具,它能帮助您精确地截取字符串或数组中指定范围内的元素,无论您是想展示文章摘要、限制图片数量,还是处理其他数据片段,它都能派上用场。 ### `slice` 过滤器的工作原理 `slice` 过滤器的语法简洁明了:`{{ obj|slice:"from:to" }}`

2025-11-08

`replace`过滤器在安企CMS模板中,如何进行字符串中特定关键词的查找和替换?

在安企CMS的日常内容管理和模板设计中,我们经常会遇到需要对字符串中的特定内容进行查找和替换的场景。无论是统一品牌名称、过滤敏感词,还是调整某些文本的显示格式,手动修改大量内容无疑是繁琐且效率低下的。幸运的是,安企CMS提供了一个非常实用的模板过滤器——`replace`,它能够帮助我们轻松实现这些字符串操作。 ### `replace`过滤器

2025-11-08

`repeat`过滤器如何将一个字符串按照指定的次数重复输出?

在网站内容制作过程中,有时我们会有将某个特定字符串重复输出多次的需求,例如用于视觉分隔、占位内容、列表项的快速生成等。在 AnQiCMS 模板系统中,`repeat` 过滤器提供了一个非常实用的功能,可以帮助我们高效地完成这项任务。这个过滤器顾名思义,就是将一个字符串按照我们指定的次数进行重复输出,从而省去了手动复制粘贴的繁琐,大大提升了模板编写的效率和灵活性。 ###

2025-11-08

`removetags`和`striptags`过滤器在处理HTML内容时,分别如何移除指定的或所有的HTML标签?

在安企CMS的日常内容运营中,我们经常会遇到需要处理HTML内容的情况。无论是为了在特定场景下展示纯文本摘要,还是为了规范内容输出、增强安全性,移除HTML标签都是一项常见的需求。安企CMS为此提供了两个非常实用的模板过滤器:`removetags`和`striptags`。它们各自拥有独特的用途和适用场景,让我们一起来深入了解它们如何帮助我们高效地净化HTML内容。 ###

2025-11-08

`stringformat`过滤器如何像Golang的`fmt.Sprintf()`一样,对任意变量进行自定义格式化输出?

在内容运营中,内容的呈现方式往往决定了用户的第一印象和阅读体验。有时,简单的变量输出无法满足我们对数据格式化展示的精细需求,比如希望数字保留固定小数位,或者在输出前添加特定的文本。安企CMS为模板开发者和内容运营者提供了强大的内容渲染能力,其中`stringformat`过滤器便是实现精细化输出的关键工具。它如同Go语言中的`fmt.Sprintf()`函数,能够对任意变量进行自定义格式化输出

2025-11-08

`thumb`过滤器在安企CMS模板中,如何根据图片地址获取其缩略图版本?

在网站内容管理中,图片的有效利用对于提升用户体验和页面加载速度至关重要。安企CMS(AnQiCMS)深谙此道,提供了强大的图片处理功能,其中 `thumb` 过滤器便是帮助我们轻松获取图片缩略图版本的利器。 ### 为什么缩略图如此重要? 想象一下,如果您的网站上所有的图片都加载原始尺寸的高清大图,页面会变得多么笨重!用户需要等待更长时间才能看到完整内容,这无疑会影响他们的耐心和网站的跳出率

2025-11-08

`trim`、`trimLeft`、`trimRight`过滤器如何删除字符串首尾或单侧的空格或特定字符?

在网站运营和内容管理中,我们经常会遇到字符串处理的需求,尤其是在数据录入、内容展示或API交互时。比如,用户不小心在文本框前后多打了几个空格,或者某些数据源自带了多余的特定字符。这些看似细微的问题,却可能影响内容的排版美观,甚至导致功能异常。 安企CMS的模板引擎提供了一系列强大的过滤器,帮助我们轻松应对这些字符串清理工作。今天,我们就来详细了解其中三个非常实用的过滤器:`trim`

2025-11-08

`truncatechars`和`truncatewords`过滤器在截取文本时,包括HTML内容,如何处理截断并添加省略号?

在日益碎片化的信息消费时代,网站内容的呈现方式直接影响着用户体验。无论是文章列表的摘要、产品介绍的预览,还是各类信息流的卡片,我们都需要在有限的空间内传达核心信息,同时保持页面的整洁和版式的统一。这就引出了文本截断的需求。AnQiCMS 作为一个功能完善的内容管理系统,深谙此道,为我们提供了强大的文本截断过滤器,特别是其对 HTML 内容的智能处理能力,让内容运营变得更加从容。 ###

2025-11-08