On Mon, 18 Mar 2024 06:24:54 GMT, Justin Lu <j...@openjdk.org> wrote:
> Please review this PR and associated > [CSR](https://bugs.openjdk.org/browse/JDK-8327703) which introduces strict > parsing for NumberFormat. > > The concrete subclasses that will utilize this leniency value are > `DecimalFormat` and `CompactNumberFormat`. Strict leniency allows for parsing > to be used as an input validation technique for localized formatted numbers. > The default leniency mode will remain lenient, and can only be set to strict > through an intentional `setLenient(boolean)` method call. Leniency operates > differently based off the values returned by `isGroupingUsed()`, > `getGroupingSize()`, and `isParseIntegerOnly()`. > > Below is an example of the change, the CSR can be viewed for further detail. > > > DecimalFormat fmt = (DecimalFormat) NumberFormat.getNumberInstance(Locale.US); > fmt.parse("1,,,0,,,00,.23Zabced45"); // returns 1000.23 > fmt.setLenient(false); > fmt.parse("1,,,0,,,00,.23Zabced45"); // Now throws a ParseException > fmt.setGroupingSize(2); > fmt.parse("12,34,567"); // throws ParseException > fmt.setParseIntegerOnly(true) > fmt.parse("12,34.56"); // throws ParseException > fmt.parse("12,34"); // successfully returns the Number 1234 > > > The associated tests are all localized, and the data is converted properly > during runtime. This pull request has now been integrated. Changeset: 941bee19 Author: Justin Lu <j...@openjdk.org> URL: https://git.openjdk.org/jdk/commit/941bee197ff679e9b8755cad117f5172e3508ef2 Stats: 1603 lines in 12 files changed: 1499 ins; 33 del; 71 mod 8327640: Allow NumberFormat strict parsing Reviewed-by: naoto ------------- PR: https://git.openjdk.org/jdk/pull/18339