Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java String.format:带有本地化的数字_Java_Localization_Numbers_String Formatting - Fatal编程技术网

java String.format:带有本地化的数字

java String.format:带有本地化的数字,java,localization,numbers,string-formatting,Java,Localization,Numbers,String Formatting,是否可以使用与NumberFormat.format相同的方法来本地化String.format调用中的数字 我希望它能简单地使用 String.format(locale, "%d", number) 但这并不像使用NumberFormat那样返回相同的结果。例如: String.format(Locale.GERMAN, "%d", 1234567890) 给出:“1234567890”,而 给出:“1.234.567.890” 如果无法做到这一点,建议使用什么方法来本地化包含数字的文

是否可以使用与NumberFormat.format相同的方法来本地化String.format调用中的数字

我希望它能简单地使用

String.format(locale, "%d", number)
但这并不像使用NumberFormat那样返回相同的结果。例如:

String.format(Locale.GERMAN, "%d", 1234567890) 
给出:“1234567890”,而

给出:“1.234.567.890”

如果无法做到这一点,建议使用什么方法来本地化包含数字的文本

从中,您必须:

  • 提供区域设置(正如您在示例中所做的那样)
  • 包括“,”标志以显示特定于区域设置的分组分隔符
所以你的例子是:

String.format(Locale.GERMAN, "%,d", 1234567890) 

请注意,“d”前面的附加“,”标志。

String.format()的另一种选择是使用MessageFormat:

MessageFormat format = new MessageFormat("The number is {0, number}", Locale.GERMAN);
String s = format.format(new Object[] {number});
为什么不先将“字符串编号”解析为数字,然后用数字格式化程序进行格式化?我的“字符串编号”可以是包含数字的字符串,所以我无法将其解析为数字。
MessageFormat format = new MessageFormat("The number is {0, number}", Locale.GERMAN);
String s = format.format(new Object[] {number});