2015-03-17 5 views
0

Я нашел это некоторое время назад, но я не могу его найти сейчас.Извлечь значение с определенным рисунком

Я хочу проанализировать координаты GPS, имеющие формат "44°59'59.93\" N " в C#, чтобы получить массив каждого значения. Ex:

degree:44 
    minutes:59 
    seconds:59.93 
    direction:"N" 

Я думаю, что решение должно быть как регулярное выражение или шаблон типа «{0} ° {1} {2} \ "{3}", но я понятия не имею, какую функцию использовать для разделения этого GPS координат в массив.

ответ

1

Вы можете использовать группы захвата, чтобы получить детали, о которых вы просите.

string value = @"44°59'59.93"" N"; 
var match = Regex.Match(value, @"(\d+)°(\d+)'([\d\.]+"")\s*([NSEW])"); 
if (m.Success) { 
    //note that these are all strings and will need to be parsed into ints/doubles 
    var degrees = m.Groups[0]; 
    var minutes = m.Groups[1]; 
    var seconds = m.Groups[2]; 
    var direction = m.Groups[3]; 
} 

Ломая это вниз:

  • ( .. ) означает «группу» - часть матча, который может быть назван как непрерывный кусок или подстроки. (например, напротив {0} заполнителей)
  • \d будет соответствовать цифре.
  • + означает «один или более», таким образом \d+ означает «один или более цифр»
  • [ .. ] означает выбор любой из вещей, в скобках (для простого случая)
  • \s средства " пробел "
  • * означает« ноль или больше ». Таким образом, \s* означает «там могут быть некоторые пробелы в здесь, идти вперед и взять их»

Вы можете добавить некоторые дополнительные \s* с в там, чтобы поймать пробелы, если таковые имеются.

4

Разделить ввод в соответствии с приведенной ниже регулярных выражений.

string[] lines = Regex.Split(value, @"[°'""] *"); 

Затем получить степень от индекса 0, в нескольких минутах от индекса 1 секунды с индексом 2, Направление от индекс 3.

Ideone

+0

Но это не подтверждает порядок разделителей. И если вы просто собираетесь разделить, вы также можете использовать 'string.Split'. – juharr

+0

Я думаю, что это будет в том же формате. 'Я хочу проанализировать координацию GPS, которые всегда форматируют' –

+0

Мне удобно, когда мне нужно анализировать только французский формат, но мне нужно также проверить английский формат, получив массив значений, не зная, является ли формат действительным, я решил использовать Regex.Match, чтобы я мог подтвердить, что ни один орган не может попытаться ввести данные недействительности или недействительный формат. Спасибо за вашу помощь. – Maxime4000

Смежные вопросы