我一直试图提取部分字符串。我是在Android应用程序(Java)中完成的。
我的问题是我的字符串会以这样的方式开头:
位置[fuse 20.01234,-30.9876 acc = 20(...)
表示设备的当前坐标(我在那里制作了20和-30)以及其他一些测量值。我想从该字符串中提取2个坐标(它们将始终位于“fused”和“acc”之间),并将它们存储为浮点数。
我环顾四周并得出结论,可能需要RegEx才能解决这个问题,但请记住,我之前只使用过正则表达式,而且我对它们仍然缺乏经验。
非常感谢任何有关如何解决这个问题的指导!
答案 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