首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按字母顺序排列字符串的液体排序数组并给它们加上标签

按字母顺序排列字符串的液体排序数组并给它们加上标签
EN

Stack Overflow用户
提问于 2022-08-16 16:30:08
回答 1查看 107关注 0票数 0

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

例如,如果我的数组是'1_ array _content','3_array_content','apple','ant','bucket‘

然后我想像这样打印出来:我如何添加第一个字母表作为标签?数字第一字母是如何工作的(所有这些字母都在0-9的标签下)。

0-9

1_array_content

3_array_content

a

蚂蚁

苹果

b

桶,桶

EN

回答 1

Stack Overflow用户

发布于 2022-08-19 13:13:23

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

  • 主要是将第一个字符一次显示为标签
  • ,第二个字符涉及数字大小写

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

代码语言:javascript
运行
复制
{% 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73377292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档