是否可以编写某种条件String格式化程序?那么如果缺少任何参数,属性字符串标记也会被忽略?
String.format("first %s, 2nd %s", null, "2nd"); //prints "first , 2nd 2nd"
但我想2nd 2nd
省略“先,`。
答案 0 :(得分:0)
你可以这样做:
String.format("first %s, 2nd %s","", "2nd");
所以第一个%s
省略了。
答案 1 :(得分:0)
我能想到的一个解决方案
String[] arg = new String[10];
arg[0] = "TWO";
if(arg.length!=2)
{
System.out.println(String.format("%s TWO",(Object[]) arg));
}
else
{
System.out.println(String.format("%s ONE , %s TWO",(Object[]) arg));
}
您也可以将String1声明为“%s ONE”,将String2声明为“%s TWO”,检查arg计数并将它们附加到finalString中,并将其传递给String.format(finalString,arg);
答案 2 :(得分:0)
您需要为算法编码 - 格式化程序不会为您执行此操作:
public String first(String s) {
return String.format("first %s", s);
}
public String second(String s) {
return String.format("second %s", s);
}
public String fmt(String... strings) {
switch (strings.length) {
case 0:
return "Empty";
case 1:
return second(strings[0]);
case 2:
return first(strings[0])+" "+second(strings[1]);
default:
return "What are you doing!!!";
}
}
答案 3 :(得分:0)
一个明显的方法是将价值作为整个术语。
比较
String.format("%s%s", "", "2nd bar");
String.format("%s%s", "first foo, ", "2nd bar");