Java字符串格式条件

kaj*_*acx 4 java string format conditional-statements

我想写一个依赖于人的性别的句子,这是我能做的:

String createSentence(String name, boolean isMale) {
    return String.format(isMale ? "I met %s, he was OK." : "I met %s, she was OK.", name);
}
Run Code Online (Sandbox Code Playgroud)

但你已经看到了失败(它工作,但代码是双重的),我想要的东西像:

String createSentence(String name, boolean isMale) {
    return String.format("I met %s, %b?'he':'she' was OK.", name, isMale);
}
Run Code Online (Sandbox Code Playgroud)

这个ofc不起作用,但是这样可能吗?

编辑:

因为我想要生成很多句子,即使是在不同的语言中,并且它们将被存储为某种排序或数组,因此这种解决方案是不方便的:

static String createSentence(String name, boolean isMale) {
    return String.format("I met %s, "+(isMale?"he":"she")+" was OK.", name);
}
Run Code Online (Sandbox Code Playgroud)

Psh*_*emo 12

怎么样

return String.format("I met %s, "+(isMale?"he":"she")+" was OK.", name);
Run Code Online (Sandbox Code Playgroud)

要么

return String.format("I met %s, %s was OK.", name, (isMale ? "he" : "she"));
Run Code Online (Sandbox Code Playgroud)

如果您可以将类型更改isMale为整数,例如它将表示映射

  • 0- > she,
  • 1- >he

你可以使用MessageFormat及其{id,choce,optionValue}

static String createSentence(String name, int isMale) {
    return MessageFormat.format("I met {0}, {1,choice,0#she|1#he} is fine",
            name, isMale);

}
Run Code Online (Sandbox Code Playgroud)