我有一个字符串生成器,它包含一些数据。我想确保每当有一个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
这样的消息答案 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
答案 3 :(得分:0)
在附加字符串之前检查字符串是否为空。如果字符串为空,则可以附加消息而不是数据字符串的内容。 ;)