public static bool TryParse(string coordinates, out DMS value) { value = new DMS(-1000m); decimal val; //Regex r = new Regex(@"(\d+)[°\s]+(\d+)['\s]+(\d+)[\.\,]?(\d*)['\s]*"); //var m = r.Match(coordinates); var c = coordinates.Split(new[] { ' ', '°', '\'', '.', ',', '"' }); try { //if (m.Success) //{ // value.D = int.Parse(m.Groups[1].Value); // value.M = int.Parse(m.Groups[2].Value); // var dig = m.Groups[4].Length > 0 ? decimal.Parse("0" + Telescope.decimalSeparator + m.Groups[4].Value) : 0; // value.S = int.Parse(m.Groups[3].Value) + dig; if (c.Length > 2) { value.D = int.Parse(c[0]); value.M = int.Parse(c[1]); var dig = c.Length > 3 ? decimal.Parse("0" + decimalSeparator + c[3]) : 0; value.S = int.Parse(c[2]) + dig; return(true); } } catch { return(false); } if (decimal.TryParse(coordinates, out val)) { value.Deg = val; return(true); } return(false); }
public static bool TryParse(string coordinates, out DMS value) { value = new DMS(-1000m); decimal val; //Regex r = new Regex(@"(\d+)[°\s]+(\d+)['\s]+(\d+)[\.\,]?(\d*)['\s]*"); //var m = r.Match(coordinates); var c = coordinates.Split(new[] { ' ', '°', '\'', '.', ',', '"' }); try { //if (m.Success) //{ // value.D = int.Parse(m.Groups[1].Value); // value.M = int.Parse(m.Groups[2].Value); // var dig = m.Groups[4].Length > 0 ? decimal.Parse("0" + Telescope.decimalSeparator + m.Groups[4].Value) : 0; // value.S = int.Parse(m.Groups[3].Value) + dig; if (c.Length > 2) { value.D = int.Parse(c[0]); value.M = int.Parse(c[1]); var dig = c.Length > 3 ? decimal.Parse("0" + decimalSeparator + c[3]) : 0; value.S = int.Parse(c[2]) + dig; return true; } } catch { return false; } if (decimal.TryParse(coordinates, out val)) { value.Deg = val; return true; } return false; }