我一直在尝试提取字符串的一部分。我正在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