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

Java(Android)-提取字符串的一部分,在两个特定单词之间,java,android,regex,string,split,Java,Android,Regex,String,Split,我一直在尝试提取字符串的一部分。我在安卓应用程序(Java)中实现了这一点 我的问题是我有一个字符串,它的开头是这样的: 位置[保险丝20.01234,-30.9876 acc=20(…) 这表示设备的当前坐标(我在这里用了20和-30)和一些其他测量值。我想从该字符串中提取2个坐标(它们总是在“fused”和“acc”之间),并将它们存储为浮点数 我环顾四周,得出结论,可能需要正则表达式来解决这个问题,但请记住,我以前只使用过一次正则表达式,我对正则表达式仍然非常缺乏经验 对于如何解决此问题的

我一直在尝试提取字符串的一部分。我在安卓应用程序(Java)中实现了这一点

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

位置[保险丝20.01234,-30.9876 acc=20(…)

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

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


对于如何解决此问题的任何指导,我们将不胜感激!

RegExr是学习和构建regex的绝佳网站:

将字符串与此正则表达式匹配将得到2个坐标:

fused\s(-?\d+\.\d+),(-?\d+\.\d+)\s
将此表达式复制到RegExr以查看每个字符的含义

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

在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

使用String.split()如果协调符前后始终有空格,则可以在不使用正则表达式的情况下获取这两个协调符。
String location=“location[fused 20.01234,-30.9876 acc=20”;location=location.substring(location.indexOf(“”),location.lastinexof(“”);String location arr[]=location.split(“,”);System.out.println(“lat:+locationArr[0]);System.out.println(“long:+locationArr[1]);
它工作得很好!谢谢你的提示,我不知道这个网站。它看起来对练习Regexs非常有用