2013-03-21 6 views
2

Каков хороший способ присоединиться к строкам с разными начальными/конечными символами в зависимости от того, существует ли один или несколько совпадений?присоединить строку с отдельными начальными/конечными символами

Ожидаемый выход

[1] foo=bar 
[2] foo=(bar & baz & quz) 

Я смотрю, чтобы увидеть, если есть что-то чуть более элегантно, чем мое решение

String s = Joiner.on(" & ").join(elements); 
return elements.size() > 1 ? "(".concat(s).concat(")") : s; 
+0

код будет выглядеть лучше, если бы вы использовали '+' для конкатенации строк: 'вернуть элементы. size()> 1? "(" + s + ")": s; ' –

ответ

3

Нет, нет лучше способа. Столяр (несколько преднамеренно) только делает прямое соединение.

0

Чуть более элегантный, но для тех, кто хочет, чтобы избежать Guava и идти с Java 8 Streams:

public class App { 

     public static void main(String args[]) { 

      List<String> stringList = new ArrayList<>(Arrays.asList("bar","baz","quz")); 
      List<String> stringListSingle = new ArrayList<>(Arrays.asList("bar")); 

      System.out.println(printStrings(stringList)); 
      System.out.println(printStrings(stringListSingle)); 
     } 

     private static String printStrings(List<String> stringList) { 
      return stringList.size() == 1 ? String.join(" & ", stringList) : stringList.stream() 
                      .collect(Collectors.joining(", ","{", "}")); 
     } 

    } 
Смежные вопросы