放置 getLatLng 工作,但不能从响应中删除 ()

Places getLatLng working, but can't remove ( ) from the response

我正在处理地点,我需要获取我所在位置的纬度和经度。这样我就成功拿到了

mLatLang  = placeLikelihood.getPlace().getLatLng();

其中 mLatLang 是 LatLng mLatLang;

现在,这一行的输出是

(-31.54254542,62.56524)

但是由于我使用 URL 来按纬度和经度查询结果,所以我无法将该数据放入带有括号 ().

的查询中

到目前为止,我已经在 Stack Overflow 上搜索了各种正则表达式来删除它,但似乎我做不到。我已经尝试过但没有成功:

types = placeLikelihood.getPlace().getPlaceTypes();
mLatLang  = placeLikelihood.getPlace().getLatLng();
String latlongshrink = mLatLang.toString();
latlongshrink.replaceAll("[\\[\\](){}]","");

我也尝试了很多 replaceAll 正则表达式,但我无法删除它们。

我的输出应该是这样的:

-31.54254542,62.56524

如果你有一个像"(abc)"这样的字符串,你想得到括号中的内容,也许你可以使用substring来截取第一个和最后一个字符。

类似的东西可能适用于您的情况(并且您不必处理正则表达式):

String withParenthesis = "(abc)";
String content = withParenthesis.substring(1, withParenthesis.length()-1);
System.out.println(content); // print abc

您的逻辑中缺少的是 replaceAll returns 结果字符串。但是您没有存储结果,这就是它不起作用的原因。所以尝试如下:

latlongshrink = latlongshrink.replaceAll("[\\[\\](){}]","");

现在尝试打印结果。它会给出预期的结果。有关 replaceAll() 函数的更多信息,请参阅 this

我刚刚用匹配器解决了它

 Matcher m = Pattern.compile("\(([^)]+)\)").matcher(latlongshrink);
                        while(m.find()) {
                            Log.e("Test",""+m.group(1));
                            latlongshrink = m.group(1);
                        }