使用某些消息替换字符串生成器中的null或空数据

时间:2012-09-13 13:18:41

标签: java

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

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或实体。" ANYTHING"等于" null"或者为空,它应该替换为像entity.id = not available

这样的消息

4 个答案:

答案 0 :(得分: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相同的引用,以及允许连续调用被链接(就像你拥有它们一样)在原始问题中)。

答案 1 :(得分: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));

答案 2 :(得分:1)

考虑使用Guava的Joiner类。

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

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

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

Guava docs

答案 3 :(得分:0)

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