public class GeneralParser extends Object
Constructor and Description |
---|
GeneralParser() |
Modifier and Type | Method and Description |
---|---|
static BigDecimal |
parseBigDecimal(CharacterIterator i)
This assumes there is a decimal number waiting on the iterator.
|
static void |
parseDigitString(CharacterIterator i,
StringBuffer digit_str)
Parses a string of 0 or more digits and appends the digits into the string
buffer.
|
static BigDecimal |
parseTimeMeasure(CharacterIterator i)
Parses a time grammer waiting on the character iterator.
|
static void |
parseWordString(CharacterIterator i,
StringBuffer word_buffer)
Parses a string of 0 or more words and appends the characters into the
string buffer.
|
static void |
skipWhiteSpace(CharacterIterator i)
Moves the iterator past any white space.
|
public static void parseDigitString(CharacterIterator i, StringBuffer digit_str)
public static void parseWordString(CharacterIterator i, StringBuffer word_buffer)
public static void skipWhiteSpace(CharacterIterator i)
public static BigDecimal parseBigDecimal(CharacterIterator i) throws ParseException
ParseException
public static BigDecimal parseTimeMeasure(CharacterIterator i) throws ParseException
To construct a valid time measure, you must supply a sequence of time measurements. The valid time measurements are 'week(s)', 'day(s)', 'hour(s)', 'minute(s)', 'second(s)', 'millisecond(s)'. To construct a time, we simply concatinate the measurements together. For example, '3 days 22 hours 9.5 minutes'
It accepts any number of time measurements, but not duplicates of the same.
The time measures are case insensitive. It is a little lazy how it reads the grammer. We could for example enter '1 hours 40 second' or even more extreme, '1 houraboutit 90 secondilianit' both of which are acceptable!
This method will keep on parsing the string until the end of the iterator is reached or a non-numeric time measure is found. It throws a ParseException if an invalid time measure is found or a number is invalid (eg. -3 days).
LOCALE ISSUE: This will likely be a difficult method to localise.
ParseException
Copyright © 2015. All rights reserved.