在Android中摆脱一半的String

时间:2018-11-22 14:19:57

标签: java

需要帮助,以摆脱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=", "");

但是它不起作用。任何帮助将不胜感激。

5 个答案:

答案 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

比您可以将其转换为doublelatlong格式

答案 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