我可以在java中格式化字符串2次吗?

我可以在java中格式化字符串2次吗?,java,string,format,Java,String,Format,假设我有一根这样的线: String-toFormatS=“%s,%s;%s,%s”; 有没有一种方法可以像这样用两个连续的格式格式化这个字符串 if(条件1){ toFormatS=String.Format(toFormatS,“foo”,“foo2”); //这将使toFormatS等于“foo,foo2;%s,%s” } 如果(条件2){ toFormatS=String.Format(toFormatS,“foo3”,“foo4”); //这将使toFormatS等于“foo,foo

假设我有一根这样的线:

String-toFormatS=“%s,%s;%s,%s”;
有没有一种方法可以像这样用两个连续的
格式格式化这个字符串

if(条件1){
toFormatS=String.Format(toFormatS,“foo”,“foo2”);
//这将使toFormatS等于“foo,foo2;%s,%s”
}
如果(条件2){
toFormatS=String.Format(toFormatS,“foo3”,“foo4”);
//这将使toFormatS等于“foo,foo2;foo3,foo4”
}
我之所以要这样做,是因为我有一个函数,它返回一个字符串,如果
,则不返回
%s
!条件1
、2
%s
如果
条件1
和4如果
条件1和条件2

下面是使用Turo的答案得出的结果:

publicstringgetformats(inti){
String r=“结果:”+i;
如果(i>15){
r+=“1:%s,%s”;
}
如果(i>20){
r+=“2:%s,%s”;
} 
}
...
字符串s=getFormatS(x);
如果(x>15){
String.Format(s,“foo1”、“foo2”、“s”、“s”);
}
如果(x>20){
String.Format(s,“foo3”,“foo4”);
}
既然你告诉我我可以添加额外的参数,我就可以这样做了

String.Format(getFormatS(x),“foo1”、“foo2”、“foo3”、“foo4”)
但是foo是由昂贵的函数生成的,如果不需要,我宁愿不调用它们。

不,但是您可以

if (condition1) {
     toFormatS = String.format(toFormatS, "foo", "foo2", "%s", "%s");
// that would make toFormatS equals to "foo, foo2 ; %s, %s"
}
if (condition2) {
     toFormatS = String.Format(toFormatS, "foo3", "foo4");
// that would make toFormatS equals to "foo, foo2 ; foo3, foo4"
}

格式中的许多参数都被忽略。

如果以原始格式转义最后两个%符号,则可以执行所需操作

String toFormatS = "%s, %s ; %%s, %%s";
if (condition1) {
    toFormatS = String.format(toFormatS, "foo", "foo2");
    // that would make toFormatS equals to "foo, foo2 ; %s, %s"
}
        
if (condition2) {
    toFormatS = String.format(toFormatS, "foo3", "foo4");
    // that would make toFormatS equals to "foo, foo2 ; foo3, foo4"
}

不,无法使用String.Format,如果您真的需要,您可以实现自己版本的String.Format。我不确定您的目标是什么。当仅
条件1
为true时,您希望得到什么?或者如果只有
condition2
为真怎么办?这不可能发生,我不想把整个函数都放在问题中。条件1是
foo>10
,条件2是
foo>20
你能澄清一下“它不可能发生”的意思吗?(或者,如果它是对我的评论或维克托的未来的回答——考虑使用<代码> NICOFFEX/<代码> <代码> %PSHEMO < /代码>在您的评论中指出它是谁的意思)如果您是指“我”,那么您是指<代码>条件1>代码>和<代码>条件2> /代码>不能有不同的值(因为这是我问的情景)。?@Pshemo正如我所说,如果条件2为真,那么条件1将为真too@user15358848我用mena替换单线,当我在顶部操作时,在这种情况下,格式字符串只有2%,现在让我们祈祷
foo
foo2
不会包含可以解释为占位符的数据,如
sos%sos
@user15358848中的
%s
,是的,对于许多参数,这是我想说的,谢谢