原始问题,但我如何格式化这样的字符串:
“Step {1} of {2}”
通过使用Java替换变量?在 C# 中,这很容易。
除了String.format,也看看java.text.MessageFormat。格式不太简洁,更接近您提供的 C# 示例,您也可以将其用于解析。
java.text.MessageFormat
例如:
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 时正确使用单数形式而在其他情况下使用复数形式的消息,您可以执行以下操作:
MessageFormat
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) });