2015-12-08 61 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

我建議你將字符串的組成格式(雙,字符串,字符串)正則表達式的外面,因爲不同程度的格式。