Вам не нужно много кода на всех, если вы используете Java 8 или более поздней версии.
String phones = Stream.of(string1, string2, string3, string4)
.filter(s -> ! s.isEmpty()) // Filter out empty strings
.collect(Collectors.joining("~"));
Если у вас есть нулевые значения, вы также можете отфильтровать их.
String phones = Stream.of(string1, string2, string3, string4)
.filter(Objects::nonNull) // <-- Filter out nulls
.filter(s -> ! s.isEmpty())
.collect(Collectors.joining("~"));
EDIT: До Java 8
Если вы используете более раннюю версию Java, один подход заключается в определении требуемой операции один раз, а затем вызвать его повторно.
public static void join(StringBuilder sb, String s) {
if ((null != s) && ! s.isEmpty()) {
if (0 < sb.length()) {
sb.append("~");
}
sb.append(s);
}
}
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
String string1 = "foo", string2 = "", string3 = null, string4 = "bar";
join(sb, string1);
join(sb, string2);
join(sb, string3);
join(sb, string4);
System.out.println(sb.toString());
}
Первые решения работают просто отлично спасибо! Был ли мой вопрос отклонен, потому что он был дубликат или отформатирован неправильно? –
Добро пожаловать в stackoverflow. Извините, что ваш первый вопрос получил негативную реакцию от некоторых. Все ответы также были отменены. В идеале, сначала мы должны быть полезны. Не позволяйте ему отворачивать вас от сайта. Вы можете счесть полезным прочитать [«Как задать хороший вопрос?»] (Http://stackoverflow.com/help/how-to-ask) и Джон Скит [«Написание идеального вопроса»] (http: //codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/). –