jdk1.5 提供了String.format()方法,给一些字符串格式化。
研究了下,觉得限制很多,本人需求是这样的:
Pattern = “##,###.##%” , "$##,###.##".........
BigDecimal big = new BigDecimal(1125.25375);如何用上面的pattern对这个BigDecimal格式化?
用String.format()方式如何实现?谢谢
研究了下,觉得限制很多,本人需求是这样的:
Pattern = “##,###.##%” , "$##,###.##".........
BigDecimal big = new BigDecimal(1125.25375);如何用上面的pattern对这个BigDecimal格式化?
用String.format()方式如何实现?谢谢
然后点format介绍中格式字符串的语法,里面讲的很清楚。
System.out.println(String.format("%,.2f", big));
可以结贴了
然后要用String.format("this is %1$4s",a)
Format的时候输出的其实是第一字段。然后在从第二个开始,只是插入到第一个字段中的参数。一般用%开头。index+$表示从第二个起第几个参数,然后后面还有一串东西每个都有不同的代表。这些看api,一般除了常用的,我也是都看api里面查哪个代表哪个的。
至于你的列子。我没试过。$打不出的可能是其实特殊字符。你试一下用\\$转义试一下。
System.out.println(String.format("$%,.2f", big));
1125253.75
String.format("$%,.2f", big);
$1,125,253.75
原来直接加前面就行,我再研究下加后缀,结帖了,谢谢大家!
Java 2 平台为格式化日期、消息和数字分别提供了三个特殊的 Format 的子类:DateFormat、MessageFormat 和 NumberFormat。 具体的子类必须实现三个方法: format(Object obj, StringBuffer toAppendTo, FieldPosition pos)
formatToCharacterIterator(Object obj)
parseObject(String source, ParsePosition pos)
这些常规方法允许对对象进行多态分析和格式化,还可以被使用(如被 MessageFormat 使用)。子类通常也为特定的输入类型提供了另外的 format 方法,也为特定的结果类型提供了 parse 方法。当在输入文本的开始没有任何所需格式的文本时,则任何不带 ParsePosition 参数的 parse 方法都应该抛出 ParseException。
大多数子类还将实现以下工厂方法: getInstance 获取一个适合于当前语言环境的有用的格式对象
getInstance(Locale) 获取一个适合于指定语言环境的有用的格式对象。
此外,某些子类还可能为了更特殊的控制实现其它 getXxxxInstance 方法。例如,NumberFormat 类提供了 getPercentInstance 和 getCurrencyInstance 方法来获取特殊的数字格式化程序。
Format 的子类如果允许程序员能为不同语言环境(比如用 getInstance(Locale) )创建对象,必须实现以下类方法: public static Locale[] getAvailableLocales()
最后子类可能定义一个常量集合来标识格式输出中的不同字段。这些常量用于创建一个 FieldPosition 对象,该对象标识字段中所包含的信息及其在格式化结果中的位置。这些常量应当命名为item _FIELD,其中item 标识了该字段。有关这些常量的例子,请参阅 ERA_FIELD 及其在 DateFormat 中的同类。 同步
格式通常不是同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问一个格式,其它必须保持外部同步。