package net.ypresto.androidtranscoder.utils; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ISO6709LocationParser { private final Pattern pattern; public ISO6709LocationParser() { this.pattern = Pattern.compile("([+\\-][0-9.]+)([+\\-][0-9.]+)"); } /** * This method parses the given string representing a geographic point location by coordinates in ISO 6709 format * and returns the latitude and the longitude in float. If location is not in ISO 6709 format, * this method returns null * * @param location a String representing a geographic point location by coordinates in ISO 6709 format * @return null if the given string is not as expected, an array of floats with size 2, * where the first element represents latitude and the second represents longitude, otherwise. */ public float[] parse(String location) { if (location == null) return null; Matcher m = pattern.matcher(location); if (m.find() && m.groupCount() == 2) { String latstr = m.group(1); String lonstr = m.group(2); try { float lat = Float.parseFloat(latstr); float lon = Float.parseFloat(lonstr); return new float[]{lat, lon}; } catch (NumberFormatException ignored) { } } return null; } }