Если градусы, минуты и секунды гарантированно разделены одним пробелом, вы можете сделать что-то такое простое, как
String line = read_a_line_from_file();
String[] tokens = line.split(" ");
Это оставит вас с
tokens[0] = "X:"
tokens[1] = "32"
tokens[2] = "14"
tokens[3] = "08.47S"
Youзатем можно Double.parseDouble()
те, что после tokens[0]
, чтобы получить числовые градусы, минуты и секунды, которые вы затем объедините, чтобы получить десятичные градусы.Конечно, для tokens[3]
вам придется удалить последний N / S / E / W-символ перед выполнением разбора.
Еще одна более элегантная возможность - воспользоваться тем фактом, что экземпляры MessageFormat
и его подклассы можно использовать для анализа строки заданного формата, а также для форматирования такой строки.