aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/geopoint/DistanceParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/geopoint/DistanceParser.java')
-rw-r--r--main/src/cgeo/geocaching/geopoint/DistanceParser.java14
1 files changed, 9 insertions, 5 deletions
diff --git a/main/src/cgeo/geocaching/geopoint/DistanceParser.java b/main/src/cgeo/geocaching/geopoint/DistanceParser.java
index 5f02895..5a840a8 100644
--- a/main/src/cgeo/geocaching/geopoint/DistanceParser.java
+++ b/main/src/cgeo/geocaching/geopoint/DistanceParser.java
@@ -1,6 +1,10 @@
package cgeo.geocaching.geopoint;
-import java.util.regex.Matcher;
+import cgeo.geocaching.utils.MatcherWrapper;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.Locale;
import java.util.regex.Pattern;
public final class DistanceParser {
@@ -18,17 +22,17 @@ public final class DistanceParser {
* @throws NumberFormatException
* if the given number is invalid
*/
- public static float parseDistance(String distanceText, final boolean metricUnit) {
- final Matcher matcher = pattern.matcher(distanceText);
+ public static float parseDistance(String distanceText, final boolean metricUnit) throws NumberFormatException {
+ final MatcherWrapper matcher = new MatcherWrapper(pattern, distanceText);
if (!matcher.find()) {
throw new NumberFormatException(distanceText);
}
final float value = Float.parseFloat(matcher.group(1).replace(',', '.'));
- final String unit = matcher.group(2).toLowerCase();
+ final String unit = matcher.group(2).toLowerCase(Locale.US);
- if (unit.equals("m") || (unit.length() == 0 && metricUnit)) {
+ if (unit.equals("m") || (StringUtils.isEmpty(unit) && metricUnit)) {
return value / 1000;
}
if (unit.equals("km")) {