Java(Android) - 在2个特定单词之间提取字符串的一部分

时间:2017-02-14 03:27:48

标签: java android regex string split

我一直试图提取部分字符串。我是在Android应用程序(Java)中完成的。

我的问题是我的字符串会以这样的方式开头:

  

位置[fuse 20.01234,-30.9876 acc = 20(...)

表示设备的当前坐标(我在那里制作了20和-30)以及其他一些测量值。我想从该字符串中提取2个坐标(它们将始终位于“fused”和“acc”之间),并将它们存储为浮点数。

我环顾四周并得出结论,可能需要RegEx才能解决这个问题,但请记住,我之前只使用过正则表达式,而且我对它们仍然缺乏经验。

非常感谢任何有关如何解决这个问题的指导!

1 个答案:

答案 0 :(得分:1)

RegExr是一个学习和构建正则表达式的好网站: http://regexr.com/

将此字符串与此正则表达式匹配将为您提供2个坐标:

fused\s(-?\d+\.\d+),(-?\d+\.\d+)\s

将此表达式复制到RegExr,以查看每个字符的含义。

要在Java中使用regex表达式,您需要确保转义反斜杠字符(添加额外的反斜杠)

在Java中:

public static void main(String[] args) {
    String yourString = "Location[fused 20.01234,-30.9876 acc=20 ";

    Pattern pattern = Pattern.compile("fused\\s(-?\\d+\\.\\d+),(-?\\d+\\.\\d+)\\s");
    Matcher matcher = pattern.matcher(yourString);
    if(matcher.find()) {
        String coordinate1 = matcher.group(1);
        String coordinate2 = matcher.group(2);
        System.out.println(coordinate1);
        System.out.println(coordinate2);
    }
}

输出:

20.01234
-30.9876