簡體   English   中英

Java使用正則表達式拆分字符串

[英]Java Split String using regular expression

我有讀取ParseGeoPoint[30.132531,31.312511] string 如何獲取保存在double變量中的坐標。 即我想要雙lat = 30.132531; double lang = 31.312511;

這是我嘗試過的:

String myText = "ParseGeoPoint[30.132531,31.312511]";
String [] latlong= myText.split("["); //it needs an escape character
String [] latlong2= latlong[1].split(",");
Double lat = Double.parseDouble(latlong2[0]);
String[] latlong3= latlong2[1].split("]");//also an escape character is needed here
Double lang = Double.parseDouble(latlong3[0]);

兩件事:如果需要轉義字符,如何在方括號上拆分? 其次,我覺得這樣做太過分了。 必須有更簡單的方法。 它是什么?

鑒於需要轉義字符,如何在方括號上拆分?

我猜你的意思是這不能編譯:

 String [] latlong= myText.split("[");

要使其編譯,請轉義[

String [] latlong= myText.split("\\[");

這是使用正則表達式從字符串中提取雙精度值的另一種方法:

Pattern pattern = Pattern.compile("ParseGeoPoint\\[([\\d.-]+),([\\d.-]+)]");
Matcher matcher = pattern.matcher(myText);
if (matcher.matches()) {
    lat = Double.parseDouble(matcher.group(1));
    lang = Double.parseDouble(matcher.group(2));
}

另一種方法是使用子字符串:

int bracketStartIndex = myText.indexOf('[');
int commaIndex = myText.indexOf(',');
int bracketEndIndex = myText.indexOf(']');
lat = Double.parseDouble(myText.substring(bracketStartIndex + 1, commaIndex));
lang = Double.parseDouble(myText.substring(commaIndex + 1, bracketEndIndex));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM