我有一个排序的字符串数组,现在我想打印出来,同时给它们贴上标签。
例如,如果我的数组是'1_ array _content','3_array_content','apple','ant','bucket‘
然后我想像这样打印出来:我如何添加第一个字母表作为标签?数字第一字母是如何工作的(所有这些字母都在0-9的标签下)。
0-9
1_array_content
3_array_content
a
蚂蚁
苹果
b
桶,桶
发布于 2022-08-19 13:13:23
好的,这里有两个问题要解决:
。
以下是一个可能的解决方案(未测试,下文解释):
{% assign numbers_label_displayed = false %}
{% assign letter_labels = '' %}
{% for item in array.items %}
{% case item.first %}
{% when '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' %}
{% unless numbers_label_displayed %}
[0-9]
{% assign numbers_label_displayed = true %}
{% endunless %}
{% else %}
{% unless letter_labels contains item.first %}
{{ item.first | append:']' | prepend:'[' }}
{% assign letter_labels = letter_labels | append: item.first | append: ' ' %}
{% endunless %}
{% endcase %}
{{ item }}
{% endfor %}
首先,我插入了两个变量,这将有助于检查标签是否已经显示。第一个是处理“数字”大小写的布尔值,第二个是存储已经显示的所有标签。
然后,我通过数组插入循环并处理这两种情况:数字和字母。我使用控制流case/when,因为它比if/else更不可靠和更轻,并且允许全局地管理这两个问题。
我在“第一时间”中列出了数字,并指定了一个“其他”来处理这些字母。
为了处理数字大小写,我为布尔变量设置了一个除非条件,然后显示数字的标签,并将我的布尔变量设置为true,这样下一次迭代就不会再显示它了。
为了处理信件大小写,我设置了一个除非条件检查是否已经将信件存储在字符串var中。如果没有,则显示字母并将其添加到字符串var中。如果是,则除非条件允许将其再次显示为label。
HTH
https://stackoverflow.com/questions/73377292
复制相似问题