我有这段代码,我尝试使用以下模式替换引号(')的千位分隔符(。): ###'###,##
import java.text.*;
public class NumberFormatTests
{
public static void main (String[] args)
{
double amount = 100100.543;
NumberFormat nf = new DecimalFormat("###'###.##");
System.out.println( "amount with formatting: " + nf.format(amount) );
}
}
但我收到此错误:
线程“主”中的异常java.lang.IllegalArgumentException: 格式错误的格式“ ###'###。##” java.text.DecimalFormat.applyPattern(DecimalFormat.java:3411)在 java.text.DecimalFormat。(DecimalFormat.java:436)在 NumberFormatTests.main(NumberFormatTests.java:8)
我知道可以通过使用 DecimalFormatSymbols 这样的方式以编程方式更改它:
import java.text.*;
import java.util.Locale;
public class NumberFormatTests
{
public static void main (String[] args)
{
double amount = 100100.543;
Locale currentLocale = new Locale("de", "DE");
DecimalFormatSymbols unusualSymbols = new DecimalFormatSymbols(currentLocale);
unusualSymbols.setGroupingSeparator('\'');
NumberFormat nf = new DecimalFormat("###,###.##", unusualSymbols);
System.out.println( "amount with formatting: " + nf.format(amount) );
}
}
但是我需要找到一种在模式中执行此操作的方法,例如“ ###'###。##”。我已经尝试过“ ###” ###。##”,但是引号被添加为后缀。
有什么方法可以替换模式中已经存在的千位分隔符,而不能以编程方式替换吗?
答案 0 :(得分:0)
可以改用DecimalFormat的子类吗? 您可以分析子类中的模式,并从模式中提取异常的分组分隔符。在调用子类的format方法时,可以将此分组分隔符与原始DecimalFormat一起使用,如您自己的示例代码所示。这是子类的format方法返回的结果。