液体排序按字母顺序排列的字符串数组并标记它们



我有一个排序的字符串数组,现在我想在标记它们的同时打印出来。

例如,如果我的数组是["1_array_content"、"3_array_contente"、"apple"、"ant"、"bucket"]

然后我想这样打印出来:我如何添加第一个字母表作为标签?这对数字首字母是如何起作用的(所有字母都属于[0-9]标签。

[0-9]

1_array_content

3_阵列_内容

[a]

蚂蚁

苹果

[b]

好的,所以这里有两个问题需要解决:

  • 主要是显示第一个字符一次作为标签
  • 第二个涉及数字案例

以下是一个可能的解决方案(未经测试,解释如下(:

{% 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更简洁,并且允许全局管理这两个问题。

我把数字列在第一个when中,并指定一个else来处理字母。

为了处理数字的情况,我为布尔变量设置了一个除非条件,然后我为数字显示标签,并将我的布尔变量设置为true,这样下一次迭代就不会再显示它了。

为了处理字母大小写,我设置了一个除非条件,检查字母是否已经存储在字符串var中。如果没有,我会显示字母并将其添加到字符串var。如果有,除非条件允许不再将其显示为标签。

HTH-

最新更新