嘿伙计们,谁能告诉我一个用逗号连接这些字符串的好方法
基本上,我正在构建一个 header 条件字符串,显示已选择了哪些表单变量。我需要在值之间放置逗号并保持中断标记的位置……有人能看到更好的方法吗?如果只有值(value),我不想要逗号
这是当前格式化后的样子:
protected final String getCriteriaHeader(MetricFilterCriteriaForm form)
{
String filterCriteria = "<br/>";
}
if (form.isSacNone() || form.isSac1() || form.isSac2() || form.isSac3())
{
filterCriteria = filterCriteria + "SAC:";
}
if (form.isSacNone())
{
filterCriteria = filterCriteria + " NONE";
}
if (form.isSac1())
{
filterCriteria = filterCriteria + " 1";
}
if (form.isSac2())
{
filterCriteria = filterCriteria + " 2";
}
if (form.isSac3())
{
filterCriteria = filterCriteria + " 3";
}
if (form.isSac1() || form.isSac2() || form.isSac3())
{
filterCriteria = filterCriteria + "<br/>";
}
if (form.isRegularScheduleType() || form.isLotScheduleType() || form.isBatchScheduleType())
{
filterCriteria = filterCriteria + "Schedule Type:";
}
if (form.isRegularScheduleType())
{
filterCriteria = filterCriteria + " Regular";
}
if (form.isLotScheduleType())
{
filterCriteria = filterCriteria + " Lot";
}
if (form.isBatchScheduleType())
{
filterCriteria = filterCriteria + " Batch";
}
return filterCriteria;
}
最佳答案
有多种方法可以使用分隔符连接字符串中的一组值。
使用 StringBuilder
用逗号添加值,然后手动删除最后一个逗号。
StringBuilder sb = new StringBuilder();
if (/*condition1*/) {
sb.add("A,"); // value with comma
}
if (/*condition2*/) {
sb.add("B,");
}
sb.delete(sb.length()-1, sb.length()); // remove last character, which is the comma.
String result = sb.toString(); // get the result string.
使用 Guava 的 Joiner
将它们全部放在一个列表中并使用 Joiner .
List<String> list = Lists.newArrayList();
if (/*condition1*/) {
list.add("A"); // no comma here
}
if (/*condition2*/) {
list.add("B");
}
String result = Joiner.on(",").join(list); // use Joiner to join elements of the list.
除了 Guava,还有来自 Apache Common Lang 的 StringUtils.Join。请参阅@Iswanto San 的回答。
关于JAVA 字符串用逗号连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14982635/