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



我一直在尝试提取字符串的一部分。我正在Android应用程序(Java(中执行此操作。

我的问题是我会有一个像这样开头的字符串:

位置[融合 20.01234,-30.9876 acc=20 (...(

这代表了设备的当前坐标(我在那里组成了 20 和 -30(和其他一些测量值。我想从该字符串中提取 2 个坐标(它们将始终位于"融合"和"acc"之间(,并将它们存储为浮点数。

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

有关如何解决此问题的任何指导将不胜感激!

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

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

fuseds(-?d+.d+),(-?d+.d+)s

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

要在 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

最新更新