在 Java 中用逗号和“and”加入 List<String>

2022-08-31 16:36:40

给定一个列表

List<String> l = new ArrayList<String>();
l.add("one");
l.add("two");
l.add("three");

我有一种方法

String join(List<String> messages) {
        if (messages.isEmpty()) return "";
        if (messages.size() == 1) return messages.get(0);
        String message = "";
        message = StringUtils.join(messages.subList(0, messages.size() -2), ", ");
        message = message + (messages.size() > 2 ? ", " : "") + StringUtils.join(messages.subList(messages.size() -2, messages.size()), ", and ");
        return message;
    }

对于 l,它产生“一,二和三”。我的问题是,有没有一个标准的(apache-commons)方法可以做同样的事情?,例如

WhatEverUtils.join(l, ", ", ", and ");

澄清。我的问题是没有让这种方法起作用。它就像我想要的那样工作,经过测试,一切都很好。我的问题是我找不到一些类似apache-commons的模块来实现这样的功能。这让我感到惊讶,因为我不能成为第一个需要这个的人。

但是,也许其他人刚刚做到了

StringUtils.join(l, ", ").replaceAll(lastCommaRegex, ", and");

答案 1

在Java 8中,您可以使用如下方式:String.join()

Collection<String> elements = ....;
String result = String.join(", ", elements);

答案 2

如何加入从:org.apache.commons.lang.StringUtils

例:

StringUtils.join(new String[] { "one", "two", "three" }, ", "); // one, two, three

要有“and”或“,and”,你可以简单地替换最后一个逗号。


推荐