小编典典

如何在 Java 中格式化字符串

all

原始问题,但我如何格式化这样的字符串:

“Step {1} of {2}”

通过使用Java替换变量?在 C# 中,这很容易。


阅读 71

收藏
2022-05-26

共1个答案

小编典典

除了String.format,也看看java.text.MessageFormat。格式不太简洁,更接近您提供的 C# 示例,您也可以将其用于解析。

例如:

int someNumber = 42;
String someString = "foobar";
Object[] args = {new Long(someNumber), someString};
MessageFormat fmt = new MessageFormat("String is \"{1}\", number is {0}.");
System.out.println(fmt.format(args));

一个更好的例子利用了 Java 1.5 中的可变参数和自动装箱改进,并将上面的内容变成了单行:

MessageFormat.format("String is \"{1}\", number is {0}.", 42, "foobar");

MessageFormat使用选择修饰符进行 i18nized 复数会更好一些。要指定在变量为 1 时正确使用单数形式而在其他情况下使用复数形式的消息,您可以执行以下操作:

String formatString = "there were {0} {0,choice,0#objects|1#object|1<objects}";
MessageFormat fmt = new MessageFormat(formatString);
fmt.format(new Object[] { new Long(numberOfObjects) });
2022-05-26