条件字符串格式化程序?

时间:2014-03-11 08:18:07

标签: java formatting

是否可以编写某种条件String格式化程序?那么如果缺少任何参数,属性字符串标记也会被忽略?

String.format("first %s, 2nd %s", null, "2nd"); //prints "first , 2nd 2nd" 但我想2nd 2nd省略“先,`。

4 个答案:

答案 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");