加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Perl中的逗号插值数组中的最后一个元素之前添加“和”

发布时间:2020-12-15 23:28:33 所属栏目:大数据 来源:网络整理
导读:我想创建一个子程序,它向元素添加逗号,并在最后一个元素之前添加“和”,例如,使“12345”变为“1,2,3,4和5”.我知道如何添加逗号,但问题是我得到的结果是“1,4和5”,我不知道如何摆脱最后一个逗号. sub commas { my @with_commas; foreach (@_) { push (@wit
我想创建一个子程序,它向元素添加逗号,并在最后一个元素之前添加“和”,例如,使“12345”变为“1,2,3,4和5”.我知道如何添加逗号,但问题是我得到的结果是“1,4和5”,我不知道如何摆脱最后一个逗号.

sub commas {
  my @with_commas;
  foreach (@_) {
    push (@with_commas,($_,",")); #up to here it's fine
    }
    splice @with_commas,-2,1,("and ",$_[-1]);
    @with_commas;
  }

您可以告诉我,我正在尝试删除新数组中的最后一个元素(@with_commas),因为它附加了逗号,并添加旧数组中的最后一个元素(@_,传递给子例程)来自主程序,没有添加逗号).

当我运行它时,结果是,“1,4和5” – 最后用逗号表示.逗号来自哪里?只有@with_commas才能得到逗号.

任何帮助表示赞赏.

解决方法

sub format_list {
   return "" if !@_;
   my $last = pop(@_);
   return $last if !@_;
   return join(',',@_) . " and " . $last;
}

print format_list(@list),"n";

与大多数其他答案不同,这也处理只包含一个元素的列表.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读