あなたは、すべてで多くのコードを必要としません。
String phones = Stream.of(string1, string2, string3, string4)
.filter(s -> ! s.isEmpty()) // Filter out empty strings
.collect(Collectors.joining("~"));
値がNULLの場合は、フィルタリングすることもできます。
String phones = Stream.of(string1, string2, string3, string4)
.filter(Objects::nonNull) // <-- Filter out nulls
.filter(s -> ! s.isEmpty())
.collect(Collectors.joining("~"));
EDIT:あなたは、Javaの以前のバージョンを使用している場合のJava 8の前に
、1つのアプローチは、一度所望の動作を定義し、それを繰り返し呼び出すことです。
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へ。申し訳ありませんが、最初の質問は一部の人から否定的な反応を受けました。すべての答えも下降した。理想的には、最初に助けてください。それがあなたをサイトから離れさせないようにしてください。 Jon Skeetの「完璧な質問を書いてください」(http://stackoverflow.com/help/how-to-ask)を読むと、 //codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)。 –