给定一个列表
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");
原文由 slipset 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您想要更全面的解决方案,可以使用出色的 NLG 库 - SimpleNLG
这可以支持任意数量的数组元素,而无需执行像“删除最后一个逗号”这样的丑陋技巧。