0

文字列ビルダーがあり、データが含まれています。nullまたはempty( "")データが含まれている場合は常に確認したいので、使用できないなどのメッセージに置き換えます。これは巨大なデータであり、すべての文字列を置き換えることはできません。以下はコードのスニペットです:

Stringbuilder sb = new Stringbuilder();
String a = "10";
String b = 13;
sb.append("entity.id=").append(a).append("entity.value=").append(b);
sb.toString;

したがって、entity.idまたはentity。 "ANYTHING"が"null"に等しいか空の場合は常に、entity.id =notavailableのようなメッセージに置き換える必要があります。

4

4 に答える 4

3

正確な要件がわからない場合、これは完璧ではないかもしれませんが、1 つのオプションです。

public void myCustomAppend(Appendable a, CharSequence cs){
  if(cs == null || cs.length() == 0){
    a.append("(not available)");
  }else{
    a.append(cs);
  }
}

myCustomAppend(sb, "entity.id=");
myCustomAppend(sb, a);
myCustomAppend(sb, "entity.value=");
myCustomAppend(sb, b);

これに対するいくつかの改善には、独自の状態を持つカスタムオブジェクトとして作成することが含まれます-StringBuilderへの同じ参照を渡し続ける必要がなくなり、連続する呼び出しを連鎖させることができます(元のオブジェクトでそれらがあったように)質問)。

于 2012-09-13T13:23:16.553 に答える
2

たとえば、関数を作成します...

public String checkString(String str) {
 if(str == null || str.isEmpty())
  return "N/A";
 return str;
}

追加する文字列で呼び出します。

sb.append("entity.id=").append(checkString(a)).append("entity.value=").append(checkString(b));

于 2012-09-13T13:23:29.803 に答える
1

Guava のJoinerクラスの使用を検討してください。

List<String> values = newArrayList("value1", "value2", a, b, c);
String result = Joinger.on(" ").useForNull("null").join(values);

「useForNull」の代わりに「omitNull」を使用することもできます

あなたが何をしているのかを見て、MoreObjects.ToStringHelperも見たいと思うかもしれません

グアバのドキュメント

于 2012-09-13T13:32:22.107 に答える
0

追加する前に、文字列が空かどうかを確認してください。文字列が空の場合、データ文字列のコンテンツの代わりにメッセージを追加できます。;)

于 2012-09-13T13:50:03.097 に答える