if (mode == null) mode = ParseMode.LENIENT;
boolean integerOnly = properties.getParseIntegerOnly();
boolean ignoreExponent = properties.getParseNoExponent();
+ boolean ignoreGrouping = properties.getGroupingSize() < 0;
// Set up the initial state
ParserState state = threadLocalParseState.get().clear();
acceptPrefix(cp, StateName.AFTER_PREFIX, state, item);
}
if (mode == ParseMode.LENIENT || mode == ParseMode.FAST) {
- acceptGrouping(cp, StateName.AFTER_INTEGER_DIGIT, state, item);
- if (state.length > 0 && mode == ParseMode.FAST) break;
+ if (!ignoreGrouping) {
+ acceptGrouping(cp, StateName.AFTER_INTEGER_DIGIT, state, item);
+ if (state.length > 0 && mode == ParseMode.FAST) break;
+ }
if (parseCurrency) {
acceptCurrency(cp, StateName.BEFORE_PREFIX, state, item);
}
}
if (mode == ParseMode.LENIENT || mode == ParseMode.FAST) {
acceptWhitespace(cp, StateName.AFTER_PREFIX, state, item);
- acceptGrouping(cp, StateName.AFTER_INTEGER_DIGIT, state, item);
+ if (!ignoreGrouping) {
+ acceptGrouping(cp, StateName.AFTER_INTEGER_DIGIT, state, item);
+ }
if (parseCurrency) {
acceptCurrency(cp, StateName.AFTER_PREFIX, state, item);
}
acceptDecimalPoint(cp, StateName.AFTER_FRACTION_DIGIT, state, item);
if (state.length > 0 && mode == ParseMode.FAST) break;
}
- acceptGrouping(cp, StateName.AFTER_INTEGER_DIGIT, state, item);
- if (state.length > 0 && mode == ParseMode.FAST) break;
+ if (!ignoreGrouping) {
+ acceptGrouping(cp, StateName.AFTER_INTEGER_DIGIT, state, item);
+ if (state.length > 0 && mode == ParseMode.FAST) break;
+ }
acceptBidi(cp, StateName.BEFORE_SUFFIX, state, item);
if (state.length > 0 && mode == ParseMode.FAST) break;
acceptPadding(cp, StateName.BEFORE_SUFFIX, state, item);