0

我有一个字符串生成器,它包含一些数据。我想确保每当其中有空或空(“”)数据时,我想用一些消息替换它,例如不可用。这是一个巨大的数据,我不能去替换每一个字符串。以下是一段代码:

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= not available 之类的消息

4

4 回答 4

3

在不知道您的确切要求的情况下,这可能并不完美,但这是一种选择:

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);

您也可以使用“omitNull”代替“useForNull”

看到你在做什么,你可能还想看看MoreObjects.ToStringHelper

番石榴文档

于 2012-09-13T13:32:22.107 回答
0

在追加之前检查字符串是否为空。如果字符串为空,您可以附加消息而不是数据字符串的内容。;)

于 2012-09-13T13:50:03.097 回答