使用Java中的regexp解析城市坐标

时间:2015-12-08 20:59:42

标签: java regex

是否有一种简单的方法可以解析诸如

之类的行

使用正则表达式输出String,double,double的结果?

e.g。

“纽约40.7127°N 74.0059°W”或

“Washington 38°53'55.133”N 77°02'15.691“W”

2 个答案:

答案 0 :(得分:1)

最简单,最简单的方法是按空格分割

String test = "New York 40.7127°N 74.0059°W ";
String[] splited = test.split("\\s+");
for (String item : splited)
    System.out.println(item);

如果你想使用正则表达式,那么首先检查非数字的开头以获取名称

Pattern p = Pattern.compile("^(\\D*)");

然后是数字

Pattern p2 = Pattern.compile("(\\d|\\.)*");

你可以得到这样的结果:

while (m2.find())
        System.out.println(m2.group(0));

点击此处: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

如果你想获得String或double,那么你只需要解析结果。

答案 1 :(得分:1)

假设问题不是关于°字符的具体问题。正则表达式

Pattern.compile("([\w ]+) (\d.*\w) (\d.*\w)");

将捕获每个字符串中的组,如下所示:

“Washington 38°53'55.133”N 77°02'15.691“W”

“纽约40.7127°N 74.0059°W”

将分组为

Washington,38°53'55.133“N,77°02'15.691”W

纽约,40.7127°N,74.0059°W

我建议您将字符串组转换为正则表达式之外的格式(Double,String,String),因为格式不同。