2015-12-08 36 views
0

对于初学者的问题的道歉,我不熟悉正则表达式。在Java中使用正则表达式解析城市坐标

有一个简单的方法来分析这样的行

输出结果字符串,双,双使用正则表达式?

例如

“纽约40.7127°N 74.0059°W” 或

“华盛顿38°53' 55.133" N 77°02' 15.691" W”

谢谢

回答

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

如果你想获得字符串或双那么你只需要解析结果就好。

1

假设问题不是专门针对°字符的。正则表达式

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

将捕获在每个串组,如下所示:

“华盛顿38°53' 55.133" N 77°02' 15.691" W”

“纽约40.7127° ñ74.0059°W”

将被分组为

华盛顿,38°53' w^

.133" N,77°02' 15.691"

纽约,40.7127°N,74.0059°W

我建议你将字符串的组成格式(双,字符串,字符串)正则表达式的外面,因为不同程度的格式。