需要帮助,以摆脱android studio中一半的字符串。字符串是:
final String strOrigin = String.valueOf(origin).trim();
返回的值是;
“ Point {type = Point,bbox = null,坐标= [27.993726079654873,-26.14686805145815]}”
我只想在字符串中只留下数字。我已经尝试过;
strOrigin.replace("Point{type=Point, bbox=null, coordinates=", "");
但是它不起作用。任何帮助将不胜感激。
答案 0 :(得分:4)
在Java中,字符串是不可变的。您必须将结果分配给新字符串:
String strResult = strOrigin.replace("Point{type=Point, bbox=null, coordinates=", "");
答案 1 :(得分:3)
只需获取坐标即可简化生活:
final String strOigin = origin.coordinates().stream()
.map(String::valueOf)
.collect(Collectors.joining(",","{","}"));
或者,如果您使用的是Java 7:
final String strOigin = String.format(
"{%s,%s}",
String.valueOf(origin.latitude()),
String.valueOf(origin.longitude())
);
答案 2 :(得分:2)
也许您忘记了replace()
返回结果,而您必须将其分配给字符串:
String strOrigin = "Point{type=Point, bbox=null, coordinates=[27.993726079654873,-26.14686805145815]}";
String str = strOrigin
.replace("Point{type=Point, bbox=null, coordinates=", "")
.replace("}","");
System.out.println(str);
将打印:
[27.993726079654873,-26.14686805145815]
答案 3 :(得分:1)
这应该可以解决问题
String s="blabla coordinates=[27.993726079654873,-26.14686805145815] ";
String requiredString = s.substring(s.indexOf("[") + 1, s.indexOf("]"));
将打印:
27.993726079654873,-26.14686805145815
比您可以将其转换为double
或latlong
格式
答案 4 :(得分:1)
看看正则表达式,它们使您可以定义更灵活的搜索模式。在您的示例中,只有在字符串的其余部分与模式完全匹配时,您才能找到坐标,但是,如果碰巧获得了bbox的其他值,甚至多余的空间,它都将无效。 此将始终匹配一对方括号之间的所有内容:
String c = origin.replaceAll(".+?(\\[.+?\\]).+?", "$1");
http://www.vogella.com/tutorials/JavaRegularExpressions/article.html https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html