解决方案 »
- 如果让一个方法支持泛型?
- MS Chart,Dundas Chart图表统计数据缺失....怎么回事?:?
- File.exist查找文件的问题:咋找不到文件呢?
- webBrowser中怎样访问一个网址后自动填写表单,可能有关多线程
- 程序运行就卡住,谁帮忙看看!
- 为什么我用Messenger API Type Library时无法实例化MessengerClass类?
- 一个性能方面的问题
- 异步socket
- 万条数据传输性能问题,高手进~在线~~
- html做页面 通过Ajax传值 C#后台处理后,C#后台应该怎么传值回html的页面
- 都来下,关于winform,怎么使窗体变暗然后出现提示框?
- 如何确保只开一个子线程?
我觉得LZ用substring()应该是属于 比较好的方法
先使用string.split(new char[]{'+','-'})
分开经度和纬度,然后再读取度分秒;
看你的字符串应该是分秒都必须是两位数的,
所以要从字符串后面开始读,就是用.substring,慢慢弄
最好先弄个度分秒的类;
然后经度和纬度继承
string str = "+1234517+451234";
string pattern = @"(\+|-)(\d{2,3})(\d{2})(\d{2})(\+|-)(\d{2,3})(\d{2})(\d{2})";
Match mat = Regex.Match(str, pattern);
if (mat.Success)
{
string longitude = mat.Groups[1].Value;
string latitude = mat.Groups[5].Value;
double degreeLong = int.Parse(mat.Groups[2].Value);
double minLong = int.Parse(mat.Groups[3].Value);
double secLong = int.Parse(mat.Groups[4].Value);
double degreeLat = int.Parse(mat.Groups[6].Value);
double minLat = int.Parse(mat.Groups[7].Value);
double secLat = int.Parse(mat.Groups[8].Value);
Console.WriteLine("{0}经{1}°{2}′{3}″{4}纬{5}°{6}′{7}″", longitude == "+" ? "东" : "西", degreeLong, minLong, secLong,
latitude == "+" ? "北" : "南", degreeLat, minLat, secLat);
double lon = degreeLong + minLong / 60 + secLong / 3600;
double lat = degreeLat + minLat / 60 + secLat / 3600;
Console.WriteLine(lon);
Console.WriteLine(lat);
}
string pattern = @"(\+|-)(\d{2,3})(\d{2})(\d{2})(\+|-)(\d{1,2})(\d{2})(\d{2})";
string pattern = @"(\+|-)(\d{1,3})(\d{2})(\d{2})(\+|-)(\d{1,2})(\d{2})(\d{2})";